BOJ 14569 - 시간표 짜기 (Python)

조민수·2024년 5월 16일
0

BOJ

목록 보기
55/64
post-custom-banner

S2, 그리디


문제

연세대학교 수강신청 기간이 시작되었다. 많은 친구들은 비어 있는 시간에 어떤 과목을 추가로 신청할 수 있는지를 궁금해 한다.

이 친구들이 비어 있는 시간에 추가로 신청할 수 있는 과목의 후보 개수를 구해보자.

후보 개수를 세는 것이므로 현재 내 시간표에서 신청할 수 있는 과목끼리 시간이 겹치더라도 모두 세어야 한다.

즉, 월요일 1, 2, 3, 4, 5교시 시간이 비어 있고 한 과목의 시간이 월요일 1, 2, 3, 4교시이고 나머지 한 과목의 시간이 월요일 2, 3, 4, 5교시라면 2과목 모두 후보가 될 수 있다.


풀이

  • 월~금이 1~50이기 때문에 이를 [0] * 51의 리스트로 선언해 풀었다.
  • 5분 정도 고민하면 풀리는 문제 정도
from sys import stdin
n = int(stdin.readline())
lecture = []

for _ in range(n):
    lecture.append(list(map(int, stdin.readline().split()))[1:])

m = int(stdin.readline())

for _ in range(m):
    now = list(map(int, stdin.readline().split()))[1:]
    # 총 수업 가능 시간 1 ~ 50
    bit = [0] * 51
    for num in now:
        bit[num] = 1

    cnt = 0
    for lec in lecture:
        flag = True
        for num in lec:
            if bit[num] == 0:
                flag = False
                break
        if flag:
            cnt += 1
        else:
            continue

    print(cnt)
profile
사람을 좋아하는 Front-End 개발자
post-custom-banner

0개의 댓글