728x90
https://www.acmicpc.net/problem/1043
1043번: 거짓말
지민이는 파티에 가서 이야기 하는 것을 좋아한다. 파티에 갈 때마다, 지민이는 지민이가 가장 좋아하는 이야기를 한다. 지민이는 그 이야기를 말할 때, 있는 그대로 진실로 말하거나 엄청나게
www.acmicpc.net
1. 집합 클래스 사용
- 진실을 알고있는 사람과 파티에 참석하는 사람의 교집합 요소의 개수가 하나라도 있으면 진실을 알고있는 사람들 집합에 합칩니다.
import sys
n, m = map(int, sys.stdin.readline().strip().split())
fact = set(list(map(int, sys.stdin.readline().strip().split()))[1:])
party = []
for _ in range(m):
party.append(set(list(map(int, sys.stdin.readline().strip().split()))[1:]))
if len(fact) == 0:
print(m)
else:
for _ in range(m):
for p in party:
# 진실을 알고있는 사람들의 집합과 파티에 참석하는 사람들 집합의 교집합에 한 명이라도 있으면
if fact.intersection(p):
fact = fact.union(p) # 합침
ans = 0
for p in party:
if not (fact & p):
ans += 1
print(ans)
728x90
'알고리즘' 카테고리의 다른 글
Python - 걷기 (1459) 그리디 (0) | 2023.06.05 |
---|---|
Python - 치즈 (2636) BFS (0) | 2023.06.03 |
C++ - 테트로미노 (14500) DFS, BRUTE FORTE (0) | 2023.05.25 |
C++ - DNA 조합 (2217) 백트래킹, 문자열 (0) | 2023.05.23 |
C++ - 모자이크(2539) 이분 탐색 (1) | 2023.05.20 |