이 문제를 풀 때 모두 다음과 같은 풀이 법을 떠올렸을 것이라 생각한다. 어떤 위치에 올 수 있는 경우의 수는 위쪽 위치에 올 수 있는 경우의 수와 왼쪽 위치에 올 수 있는 경우의 수를 더한 것이다. 웅덩이가 있는 부분은 in 함수를 써서 해당 위치일 경우에는 0 값을 넣어주면 간단하게 해결되는 문제이다!
그리고 나는 이러한 방식을 첫줄과 첫열에도 적용하기 위해서 (계산의 편의를 위해) 한 줄과 한 열을 더 만들었다. 한 줄씩을 더 만들고 집이 있는 곳의 값을 1로 주면 왼쪽과 위에 있는 값을 더해서 현재의 값이 나오도록 짤 수 있다.
def solution(m, n, puddles):
dp = [[0]*(m+1) for _ in range(n+1)]
dp[1][1] = 1
for i in range(1, m+1):
for j in range(1, n+1):
if i==1 and j==1:
continue
if [i,j] in puddles:
dp[j][i] = 0
continue
dp[j][i] = dp[j-1][i] + dp[j][i-1]
return dp[n][m]%1000000007
'알고리즘' 카테고리의 다른 글
코딩 테스트를 위해 꼭 알아야 할, Python 문법 정리 (0) | 2021.11.14 |
---|---|
[웅's 프로그래머스] 기능개발 - 파이썬(python) 풀이 (0) | 2021.09.25 |
[웅's 프로그래머스] 정수 삼각형 - 파이썬(python) 풀이 (0) | 2021.09.22 |
[웅's 프로그래머스] N으로 표현 - 파이썬(python) 풀이 (0) | 2021.09.22 |
[웅's 프로그래머스] 체육복 - 파이썬(python) 풀이 (0) | 2021.09.22 |