Beakjoon&프로그래머스/파이썬
[백준/파이썬] 3182번 한동이는 공부가 하기 싫어!
현장
2022. 5. 15. 20:50
-Code
def dfs(start, cnt):
visited[start] = True
g = graph[start][0]
if not visited[g]:
cnt = dfs(g, cnt + 1)
return cnt
n = int(input())
graph = [[] for _ in range(n + 1)]
result = [0] * (n + 1)
for i in range(1, n + 1):
h = int(input())
graph[i].append(h)
for i in range(1, n + 1):
visited = [False] * (n + 1)
result[i] = dfs(i, 1)
print(result.index(max(result)))
-처음코드
def dfs(start):
global cnt
visited[start] = True
for i in range(1, n + 1):
if not visited[i] and graph[start][i]:
cnt += 1
dfs(i)
return cnt
n = int(input())
graph = [[0 for _ in range(n + 1)] for _ in range(n + 1)]
result = 0
for i in range(n):
h = int(input())
graph[i][h] = 1
for i in range(1, n + 1):
visited = [False] * (n + 1)
cnt = 0
result = max(result, dfs(i))
print(result)
처음에 두번째 코드로 짜서 예시 입출력은 다 나오나 시간 초과로 틀려서 찾아보니 전 문제처럼 잡고 n * n개 보다 적게 검사하여 풀면 해결이 되는 문제여서 아쉬웠습니다.