#문제링크
https://www.acmicpc.net/problem/1043
1043번: 거짓말
지민이는 파티에 가서 이야기 하는 것을 좋아한다. 파티에 갈 때마다, 지민이는 지민이가 가장 좋아하는 이야기를 한다. 지민이는 그 이야기를 말할 때, 있는 그대로 진실로 말하거나 엄청나게
www.acmicpc.net
#나의풀이
import sys
if __name__=="__main__":
N, M = map(int, sys.stdin.readline().split())
knowPeople = set(sys.stdin.readline().split()[1:])
parties = []
answer = 0
for _ in range(M):
tmp = list(sys.stdin.readline().split()[1:])
parties.append(tmp)
for _ in range(M):
for party in parties:
for human in party:
if human in knowPeople:
knowPeople = knowPeople.union(party)
for i in range(M):
check = True
for human in parties[i]:
if human in knowPeople:
check = False
break
if(check):
answer += 1
print(answer)
#해설
자바로는 많이 풀어본 유형이라 본 순간 파이썬으로는 어떻게 구현해야 할지 감이 잘 안왔는데 다른 사람들의 코드에서 간편한 코드가 있어서 참고했습니다.
진실을 알고 있는 사람들이 있고 모르는 사람들로 나뉘어져 있는데 진실을 알고 있는 사람들과 같은 파티에 속하게 된다면 그 사람도 진실을 아는자로 구분해서 풀면 되는 문제였습니다. 단순히 한번 반복문으로 진실을 아는 사람들을 체크하는것이 아닌 각 파티들을 돌때마다 모든 파티들을 다시 한번 체크해서 진실을 아는 사람들을 체크해주었습니다.
'코딩테스트' 카테고리의 다른 글
[백준/파이썬] 9251 LCS (0) | 2022.12.21 |
---|---|
[백준/파이썬] 1149 RGB거리 (0) | 2022.11.16 |
[프로그래머스/LEVEL 2/파이썬] 괄호 회전하기 (0) | 2022.06.27 |
[프로그래머스/LEVEL 1/파이썬] 비밀지도 (0) | 2022.06.27 |
[프로그래머스/LEVEL 1/파이썬] 실패율 (0) | 2022.06.27 |