나의 풀이
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 |