본문 바로가기
Algorithm 💡/DP

[프로그래머스 Lv.3] 등굣길

by 킹우현 2024. 7. 15.

def solution(m, n, puddles):
    
    # m x n 크기의 격자모양
    # 물에 잠기지 않은 지역을 통해 학교를 가려고 합니다
    # 오른쪽과 아래쪽으로만 움직여 집에서 학교까지 갈 수 있는 최단경로의 개수를 1,000,000,007로 나눈 나머지
    
    # 0 1 1 1
    # 1 0 1 2
    # 1 1 2 4
    
    area = [[0]*m for _ in range(n)]
    
    for x, y in puddles:
        area[y-1][x-1] = 1
        
    dp = [[0]*m for _ in range(n)]
    
    for i in range(1,n):
        if area[i][0] == 0:
            dp[i][0] = 1
        else:
            break
    for i in range(1,m):
        if area[0][i] == 0:
            dp[0][i] = 1
        else:
            break
        
    for i in range(1,n):
        for j in range(1,m):
            if area[i][j] == 0:
                dp[i][j] = (dp[i-1][j] + dp[i][j-1])%1000000007
            else:
                dp[i][j] = 0

    return dp[n-1][m-1]

'Algorithm 💡 > DP' 카테고리의 다른 글

[백준 15989번] 1, 2, 3 더하기 4  (1) 2024.09.26
[프로그래머스 Lv.3] N으로 표현  (0) 2024.07.04
[백준 2096번] 내려가기  (0) 2024.06.28
[백준 17404번] RGB거리 2  (0) 2023.10.01
[백준 11659번] 구간 합 구하기 4  (0) 2023.10.01