본문 바로가기

Coding Test/Programmers

[프로그래머스/파이썬] 등굣길

728x90

 

 

나의 풀이

def solution(m, n, puddles):
    N = 1000000007
    field = [[-1] * m for _ in range(n)]

    for x, y in puddles:
        field[y - 1][x - 1] = 0

    field[0][0] = 1

    for x in range(m):
        for y in range(n):
            if field[y][x] == -1:
                if y == 0:
                    field[y][x] = field[y][x - 1]
                elif x == 0:
                    field[y][x] = field[y - 1][x]
                else:
                    field[y][x] = (field[y - 1][x] + field[y][x - 1]) % N
    return field[n-1][m-1] % N

 

 

 

dictionary와 재귀함수를 사용한 풀이

def solution(m, n, puddles):
    answer = 0
    info = dict([((2, 1), 1), ((1, 2), 1)])
    for puddle in puddles:
        info[tuple(puddle)] = 0

    def func(m, n):
        if m < 1 or n < 1:
            return 0
        if (m, n) in info:
            return info[(m, n)]
        return info.setdefault((m, n), func(m - 1, n) + func(m, n - 1))
    return  func(m, n) % 1000000007

 

반응형