https://www.acmicpc.net/problem/1043
1043번: 거짓말
지민이는 파티에 가서 이야기 하는 것을 좋아한다. 파티에 갈 때마다, 지민이는 지민이가 가장 좋아하는 이야기를 한다. 지민이는 그 이야기를 말할 때, 있는 그대로 진실로 말하거나 엄청나게
www.acmicpc.net
풀이
문제를 보았을때 알수있는 힌트
문제를 이해하면 쉽게 풀 수 있는 문제입니다.
입력을 통해 총 사람 수 50, 파티 수 50 , 파티 하나 당 50명씩 있다고 해도 총 50*50 =2500번이 돌아간다.
추가적으로 50번씩 돌리게 해도 총 125000번 돌기에 문제를 통과하기에는 충분한 시간이다.
먼저 진실을 알수밖에 없는 수를 만들면 되는데 처음 2번째 줄에서 나오는 진실의 사람을 체크 한다.
이후 파티에 진실을 아는 사람이 있는지 찾고 있는 경우에 그 파티에 있던 사람들도 진실을 아는 사람으로 추가하면 된다.
이것을 파티가 총 50개이기 때문에 처음부터 50번을 반복해서 돌려준다. 이유는 처음에 통과 과장을 들었을수도 있는 사람이 통과했을수도 있기 때문이다.
이를 고려해서 푸면 충분히 풀 수 있는 문제이다.
왜.. 골드 4인지는 모르지만 아마 유니온 파인드로 풀게 하려는 의도이지만 입력이 작기에 쉽게 반복문만 이용해도 풀수있다.
import sys
input= sys.stdin.readline
n,m = map(int,input().split())
dp = [False for _ in range(m+1)]
truePersonCount = list(map(int,input().split()))
truePerson=set(truePersonCount[1:])
party=[]
count = 0
for i in range(m):
temp = list(map(int,input().split()))[1:]
party.append(temp)
for _ in range(50):
for i in party:
temp = i
tempBool = False
for j in temp:
if j in truePerson:
tempBool = True
break
if tempBool==True:
for j in temp:
truePerson.add(j)
for i in party:
temp = i
for j in temp:
if j in truePerson:
break
else:
count+=1
print(count)
https://github.com/dydwkd486/coding_test/blob/main/baekjoon/baekjoon1043.py
GitHub - dydwkd486/coding_test: 코딩테스트 공부한 내용 정리
코딩테스트 공부한 내용 정리. Contribute to dydwkd486/coding_test development by creating an account on GitHub.
github.com
'Coding Test > baekjoon' 카테고리의 다른 글
[백준 1167] 트리의 지름 - python (solved.ac - 골드 3) (0) | 2022.05.12 |
---|---|
[백준 2407] 조합 - python (solved.ac - 실버 3) (0) | 2022.05.12 |
[백준 1041] 주사위 - python (solved.ac - 골드 5) (0) | 2022.05.09 |
[백준 9935] 문자열 폭발 - python (solved.ac - 골드 4) (0) | 2022.05.09 |
[백준 2470] 두 용액 - python (solved.ac - 골드 5) (0) | 2022.05.05 |