책너두 - 알고리즘 챌린지[10/20]

Moon·2023년 7월 24일
0
post-thumbnail

오늘의 문제 : 회전초밥


dict와 list를 적절히 활용하여 풀 수 있었다.

이 문제 시간초과가 나지 않으려면, 사람별로 초밥리스트를 짜는 게 아니라, 초밥별로 대기하는 사람의 리스트를 짜면 시간초과가 나지 않는다.


import sys

n, m = map(int, sys.stdin.readline().split())
sushi_wait = dict()
ans = [0 for _ in range(n+1)]
for i in range(1, n+1) :
    k, *guests = map(int, sys.stdin.readline().split())
    for guest in guests :
        if guest not in sushi_wait :
            sushi_wait[guest] = [i]
        else :
            sushi_wait[guest].append(i)
sushis = map(int, sys.stdin.readline().split())

for sushi in sushis :
    if sushi in sushi_wait and len(sushi_wait[sushi]) > 0 :
        eater = sushi_wait[sushi][0]
        sushi_wait[sushi].remove(eater)
        ans[eater] += 1
    
print(*ans[1:])

    
profile
안녕하세요. Moon입니다!

0개의 댓글