반응형

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

+ Recent posts