-문제:

 

-정답풀이:

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)

'백준 > DP' 카테고리의 다른 글

[dp/백준] 9184번: 신나는 함수 실행  (0) 2022.06.19
[dp/백준] 9252번: LCS2  (0) 2022.06.18
[dp/백준] 1890번: 점프  (0) 2022.06.17
[dp/백준] 2565번: 전깃줄  (0) 2022.06.17
[dp/백준] 1309번: 동물원  (0) 2022.06.17

+ Recent posts