728x90
https://www.acmicpc.net/problem/1043
1043번: 거짓말
지민이는 파티에 가서 이야기 하는 것을 좋아한다. 파티에 갈 때마다, 지민이는 지민이가 가장 좋아하는 이야기를 한다. 지민이는 그 이야기를 말할 때, 있는 그대로 진실로 말하거나 엄청나게
www.acmicpc.net
해당 문제는 파티리스트들을 2번 스캔 해야합니다.
진실을 알고 있는 사람과 같은 파티에 참석할 경우 해당하는 파티원들은 모두 진실만 들을 수 있습니다.
따라서 파티 리스트들을 한번 스캔하는데 진실을 알고있는 사람들의 그룹을 만듭니다. ( 파이썬 set 자료구조 사용 )
두번째 스캔에는 파티원들 모두 진실을 알고 있는 그룹에 속하지 않아야 지민이는 거짓말을 할 수 있습니다.
N, M = map(int, input().split())
graph = list(map(int, input().split()))
truthPeopleCount = graph[0]
truthPeopleList = set(graph[1:])
partyList = [list(map(int, input().split()))[1:] for _ in range(M)]
updated = True
while updated:
updated = False
for party in partyList:
if any(person in truthPeopleList for person in party):
if not truthPeopleList.issuperset(party): # 새로운 사람을 추가하는지 확인
truthPeopleList = truthPeopleList.union(party)
updated = True
counter = sum(1 for party in partyList if not any(person in truthPeopleList for person in party))
print(counter)
728x90
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 1937번 : 욕심쟁이 판다 (0) | 2023.08.24 |
---|---|
[백준] 1967번 : 트리의 지름 (0) | 2023.08.22 |
[백준] 1976번 : 여행 가자 (0) | 2023.08.21 |
[백준] 1717번 : 집합의 표현 (0) | 2023.08.21 |
[백준] 9466번 : 텀 프로젝트 (0) | 2023.08.21 |