:pencil2:코드

import sys
# sys.stdin = open("input.txt")
input = sys.stdin.readline


n = int(input())
e = int(input())
dict = {}
for i in range(1, n + 1):
    dict[i] = set()
song = 1
for _ in range(e):
    k, *arr = map(int, input().rstrip().split())
    if 1 in arr:
        for x in arr:
            dict[x].add(song)
        song += 1
    else:
        temp = set()
        for x in arr:
            temp = temp.union(dict[x])
        for x in arr:
            dict[x] = dict[x].union(temp)


for key in dict.keys():
    if dict[key] == dict[1]:
        print(key)


:star:풀이

분명 실버 4의 난이도인데… 12번만에 맞췄다 으악! (실버를 얕보지 마라!):smiling_imp:

일단 문제를 계속 잘못 이해하고 있었다! 새로운 노래는 선영이만 만들 수 있다!

그리고 선영이와 같이 있던 애들이 선영이가 없는 동안 노래를 퍼뜨리고 다니는 구조이다.

각각의 사람마다 노래 모음집을 만들어주었다.

노래의 번호는 1부터 시작하고 선영이가 캠프파이어에 참여할 때마다 1씩 늘어난다

선영이가 없는 동안에는 각각의 캠프 파이어 참여자의 노래 모음집을 전부 union시켜준 뒤에(temp) 이 모음집을 다시 자신의 노래 모음집에 업데이트 해준다.

마지막에는 선영이와 같은 노래모음집을 가진 사람들만 순서대로 출력해준다!

문제를 풀면서 부캠 코드리뷰 시간때 은비님이 리스트를 받아올 때 unpacking 하는 방식을 사용해 보았다.

역시 코드리뷰는 짱짱이당!! 얼른 다음주 코드리뷰를 위해 나머지 문제도 해결하자(는 추천시스템 강의가 너무 많이 밀려있음 ㅜㅜㅜㅜ)

화이팅!!:fire:

댓글남기기