개발자 톡

연습문제 톡 효도 여행

max 연산자 시간소요 관련

등록일
2024-02-23 08:20:02
조회수
368
작성자
hhs511
mport sys
input = sys.stdin.readline
sys.setrecursionlimit(5000)

n, m = map(int, input().split())
s = input()
graph = [ [] for _ in range(5003)]

visited = [False] * 5003
d = [[0]*5003 for _ in range(5003)]
ans = 0

def dfs(u, level, road) :
    global ans
    visited[u] = True
    for i in range(m+1) :
        if level == 0 or i ==0 :
            d[level][i] = 0
        elif road[level-1] == s[i-1] :
            d[level][i] = d[level-1][i-1] + 1
        else :
            d[level][i] = max(d[level][i-1], d[level-1][i])
        ans = max(ans, d[level][i])
        
    for nxt in graph[u] :
        v, c = nxt
        if visited[v] :
            continue
        dfs(v, level+1, road+c)
        
for _ in range(n-1) :
    u, v, c = input().split()
    u, v = map(int, [u, v])
    graph[u].append((v, c))
    graph[v].append((u, c))
    
dfs(1,0,"")
print(ans)


이 코드에서 만약 ans=-1로 초기화 하였을때 1개 예시에서 시간초과가 나던데, 혹시 이유에 대해서 설명해주실분 계실까요?(코드 복기 차원에서..)

상식적으로 ans=0으로 초기화 하는게 맞긴 하지만, 중요하게 생각하지 않아서 -1로 했다가 시간 초과 잡느라 애먹었네요...

#효도_여행
#max연산
#시간초과
#코드복기

이 카테고리의 톡 더보기