목차

등굣길

ps
링크programmers.co.kr/…
출처프로그래머스
문제 번호42898
문제명등굣길
레벨Level 3
분류

동적 계획법

시간복잡도O(nm)
인풋사이즈n<100, m<=100
사용한 언어Python
해결날짜2021/06/25
태그

고득점 Kit - 동적계획법

풀이

코드

"""Solution code for "Programmers 42898. 등굣길".

- Problem link: https://programmers.co.kr/learn/courses/30/lessons/42898
- Solution link: http://www.teferi.net/ps/problems/programmers/42898
"""

MOD = 1_000_000_007


def solution(m, n, puddles):
    puddles_set = {(r - 1, c - 1) for c, r in puddles}
    dp_cur = [1] + [0] * (m - 1)
    for r in range(n):
        dp_cur, dp_prev = [], dp_cur
        for c in range(m):
            if (r, c) in puddles_set:
                dp_cur.append(0)
            elif c == 0:
                dp_cur.append(dp_prev[c])
            else:
                dp_cur.append((dp_cur[-1] + dp_prev[c]) % MOD)
    return dp_cur[-1]