Posts [알고리즘] 프로그래머스 - 등굣길
Post
Cancel

[알고리즘] 프로그래머스 - 등굣길


문제

m*n 격자의 1,1은 집, m,n은 학교이다.
일부 지역이 물에 잠겼을 때, 잠기지 않은 지역을 통해 학교에 가려한다.
최단경로의 개수를 1,000,000,007로 나눈 나머지를 반환하라.


입출력 예시

mnpuddlesresult
43[[2,2]]4


접근

이건 고등학교 때 배운 것 같다.
위에서 아래로, 왼쪽에서 오른쪽으로 한칸씩 탐색하며 현재 칸까지 올 수 있는 경우의 수는 다음과 같다.

1
d[x][y] = d[x-1][y] + d[x][y-1]

웅덩이와 배열범위를 조심한다면 쉽게 해결할 수 있다.
배열 인덱스를 0부터 사용하지 않고, 1부터 사용하는 방식으로 설계하면 코드 구현이 쉬워진다.

코드

  • 파이썬 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def solution(m, n, puddles):
    answer = 0
    d = [[0 for _ in range(m+1)] for _ in range(n+1)]

    for y, x in puddles:
        d[x][y] = -1
    d[0][1] = 1
    for i in range(1, n+1):
        for j in range(1, m+1):
            if d[i][j] == -1:
                d[i][j] = 0
            else:
                d[i][j] = (d[i-1][j] + d[i][j-1]) % 1000000007

    return d[n][m]


This post is licensed under CC BY 4.0 by the author.

[알고리즘] 프로그래머스 - 2 x n 타일링

[알고리즘] 프로그래머스 - 가장 긴 팰린드롬