-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개 보다 적게 검사하여 풀면 해결이 되는 문제여서 아쉬웠습니다.
'Beakjoon&프로그래머스 > 파이썬' 카테고리의 다른 글
[백준/파이썬] 1182번 부분수열의 합 (0) | 2022.05.17 |
---|---|
[백준/파이썬] 9020번 2021은 무엇이 특별할까? (0) | 2022.05.16 |
[백준/파이썬] 11725번 트리의 부모 찾기 (0) | 2022.05.15 |
[백준/파이썬] 1972번 놀라운 문자열 (0) | 2022.05.15 |
[백준/파이썬] 12933번 오리 (0) | 2022.05.15 |