본문 바로가기
코딩테스트 파이썬/백준

거짓말 ( 1043번 )

by 세용용용용 2025. 3. 2.

1043번: 거짓말

 

나의 풀이

import sys

def _main(n_ct, p_ct, s_list, p_list):
    answer = 0

    for _ in range(p_ct):
        for now_pt in p_list:
            if (s_list & now_pt):
                s_list = (s_list | now_pt)
    for part in p_list:
        if (part & s_list):
            continue
        answer += 1

    return answer

n_ct, p_ct = map(int, sys.stdin.readline().rstrip().split())
s_list = set(list(map(int, sys.stdin.readline().rstrip().split()))[1:])
p_list = [set(list(map(int, sys.stdin.readline().rstrip().split()))[1:]) for _ in range(p_ct)]

print(_main(n_ct, p_ct, s_list, p_list))

 

시간 복잡도

for _ in range(p_ct) : 파티 수 만큼 순회 ( 선형 시간 복잡도 )
    for now_pt in p_list : 파티 집합 순회 ( 선형 시간 복잡도 )
    
해당 파이썬 알고리즘 시간복잡도 : 이차형 시간 복잡도 ( O(n ** 2) )

'코딩테스트 파이썬 > 백준' 카테고리의 다른 글

특정한 최단 경로 ( 1504번 )  (0) 2025.03.11
벽 부수고 이동하기 ( 2206번 )  (0) 2025.03.09
파이프 옮기기 1 ( 17070번 )  (0) 2025.02.27
숨박꼭질 3 ( 13549번 )  (0) 2025.02.21
파티 ( 1238번 )  (0) 2025.02.20