반응형
https://www.acmicpc.net/problem/3182
3182번: 한동이는 공부가 하기 싫어!
H-ALGO 회원인 한동이는 공부하는것을 좋아하지 않는다. 하지만 약삭빠르게도 한동이는 공부도 하지 않으면서 어려운 시험을 통과하고 싶어한다. 그러던 와중 어느 날, 한동이의 동기가 한동이에
www.acmicpc.net
해결 방법 : 브루트포스
- 각 선배들 기준에서 cycle이 생길 때까지 count를 탐색한다.
- cycle이 생기는 것은 path 배열을 사용하여 확인한다.
import sys
input = sys.stdin.readline
def solution(N, G):
counts = [0] * (N + 1) # 각 선배를 시작으로 몇 번 contact가 되는지 저장
path = [0] * (N + 1) # visited 배열
def recursive(cur):
if path[cur] == 1: # cycle 발생
return 0
path[cur] = 1 # visit
cnt = recursive(G[cur]) + 1 # 재귀 호출(다음 선배 연락)
path[cur] = 0
return cnt
for i in range(1, N + 1):
counts[i] = recursive(i)
return counts.index(max(counts))
if __name__ == '__main__':
N = int(input())
G = {i + 1 : int(input()) for i in range(N)}
result= solution(N, G)
print(result)반응형
'IT study > 알고리즘 문제 풀이' 카테고리의 다른 글
| 백준 16156 : 장애물 달리기 (1) | 2021.08.16 |
|---|---|
| 백준 1027 : 고층 건물 (0) | 2021.08.14 |
| 백준 3077 : 임진왜란 (0) | 2021.08.12 |
| 백준 9081 : 단어 맞추기 (0) | 2021.08.11 |
| 백준 5710 : 전기 요금 (0) | 2021.08.10 |