-
[BOJ 17488, Python 3] 수강 바구니알고리즘/BOJ 2021. 9. 1. 19:00반응형
https://www.acmicpc.net/problem/17488
풀이
먼저 각 수업마다 어떤 학생이 수강 신청에 성공하였는지 확인하는 success 리스트와 각 수업마다 업데이트를 해야하니 success리스트와 구조가 같은 새로운 new_success라는 리스트가 필요합니다.
이렇게 준비한다음 1차 수강 바구니를 전부 new_success라는 리스트에 저장해주고, 다 신청했다면 for문으로 각 수업마다 수강제한인원 이하로 신청하였는지 확인하여 조건에 만족하는 수업은 success[i] = new_success[i]로 업데이트 해주면 됩니다.
2차 수강 바구니도 1차때와 똑같이 반복해주면 됩니다.
코드
123456789101112131415161718192021n, m = map(int, input().split())arr = [0] + [*map(int, input().split())]success = [[] for _ in range(m + 1)]ans = [[] for _ in range(n + 1)]for t in range(2):new_success = __import__('copy').deepcopy(success)for i in range(n):L = [*map(int, input().split())]for j in range(len(L)-1):new_success[L[j]].append(i+1)for i in range(1, m+1):if len(new_success[i]) <= arr[i]:success[i] = new_success[i]else: arr[i] = 0for i in range(m+1):for x in success[i]:ans[x].append(i)for i in range(1, n+1):if len(ans[i]): print(*ans[i])else: print('망했어요')cs 반응형'알고리즘 > BOJ' 카테고리의 다른 글
[BOJ 4619, Python 3] 루트 (0) 2021.09.03 [BOJ 17489, Python 3] 보물 찾기 (0) 2021.09.01 [BOJ 17487, Python 3] 타자 연습 (0) 2021.09.01 [BOJ 20957, C++] 농부 비니 (0) 2021.08.31 [BOJ 20956, Python 3] 아이스크림 도둑 지호 (0) 2021.08.31