https://school.programmers.co.kr/learn/courses/30/lessons/42898
❗풀이방법
- 고등학교 때 길 찾기 문제랑 똑같이 접근
- 1행과 1열을 dp에서 1로 지정
- 하지만 중간에 그래프에서 0이 나오는 경우, 해당 인덱스부터 끝까지는 dp에서 0으로 처리(이동 불가)
- 상, 좌 dp값을 합쳐서 현재값을 업데이트
- [행-1][열-1]이 정답
❗코드
def solution(m, n, puddles):
graph = [[1 for _ in range(m)] for _ in range(n)]
dp = [[0 for _ in range(m)] for _ in range(n)]
for i, j in puddles:
graph[j - 1][i - 1] = 0
row_idx = m
col_idx = n
for i, g in enumerate(graph[0]):
if g == 0:
row_idx = i
break
for i, g in enumerate([g[0] for g in graph]):
if g == 0:
col_idx = i
break
for i in range(row_idx):
dp[0][i] = 1
for i in range(col_idx):
dp[i][0] = 1
for i in range(1, n):
for j in range(1, m):
if graph[i][j] == 1:
dp[i][j] = (dp[i - 1][j] + dp[i][j - 1]) % 1000000007
return dp[n-1][m-1]
728x90
반응형
'🔻PS > Programmers' 카테고리의 다른 글
[Programmers] 프로그래머스 연속 부분 수열 합의 개수 Python (0) | 2024.09.26 |
---|---|
[Programmers] 프로그래머스 다음 큰 숫자 Python (0) | 2024.09.24 |
[Programmers] 프로그래머스 롤케이크 자르기 Python (0) | 2024.09.04 |
[Programmers] 프로그래머스 문자열 나누기 Python (0) | 2024.09.04 |
[Programmers] 프로그래머스 모의고사 Python (0) | 2024.07.16 |