백준/DP

[dp/백준] 1937번: 욕심많은 판다(다시 풀어보기)

ydin 2022. 6. 18. 22:33

-문제:

 

-정답풀이:

n=int(input())
data=[]
for _ in range(n):
    data.append(list(map(int,input().split())))

dx=[-1,1,0,0]
dy=[0,0,-1,1]
dp=[[0]*n for _ in range(n)]
def dfs(x,y):
    if dp[x][y]: #여기
        return dp[x][y] #여기
    dp[x][y]=1 #여기
    for i in range(4):
        nx,ny=x+dx[i],y+dy[i]
        if 0 <= nx < n and 0 <= ny < n:
            if data[x][y]< data[nx][ny]:
                dp[x][y]=max(dp[x][y],dfs(nx,ny)+1) #지금까지 온 칸 수와 이동했을 때 칸 개수 비교
    return dp[x][y]   

answer=0                
for i in range(n):
    for j in range(n):
        answer=max(answer,dfs(i,j))
                        
print(answer)