일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- themida
- 여행경로
- 개발
- 타겟 넘버
- level 2
- level3
- level2
- DFS/BFS
- 프로그래머스
- 선형회귀
- 코딩테스트
- 머신러닝
- 같은숫자는싫어
- 더 맵게
- level1
- Programmers
- 스택/큐
- level 3
- 전화번호 목록
- github
- 자물쇠와 열쇠
- 동빈나
- Python3
- 2020 KAKAO BLIND RECRUITMENT
- 동적계획법
- 베스트앨범
- pwnable
- 문자열압축
- vscode
Archives
- Today
- Total
hoon
[Programmers][동적계획법(Dynamic Programming)] 등굣길 본문
링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42898
최단 거리 문제이다.
처음에 공식으로 날먹할려다 '최단거리 - 방해물을 거쳐가는 길'은 방해물들을 거쳐가는 길에 중복이 생긴다는 것을 늦게 깨닫고 문제의 의도대로 동적 계획법을 사용해야됨을 절실히 깨달았다.
풀이 1
def solution(m, n, puddles):
path = [[0]*m for i in range(n)]
x = 0
y = 0
while [x+1, 1] not in puddles and x in range(m):
path[0][x] = 1
x += 1
while [1, y+1] not in puddles and y in range(n):
path[y][0] = 1
y += 1
for y in range(1,n):
for x in range(1,m):
if [x+1, y+1] not in puddles:
path[y][x] = path[y-1][x] + path[y][x-1]
return path[n-1][m-1]%1000000007
풀이 2
def solution(m, n, puddles):
map = [[0]*(m+1) for _ in range(n+1)]
map[1][1] = 1
for x, y in puddles:
map[y][x] = -1
for y in range(1, n+1):
for x in range(1, m+1):
if map[y][x] == -1:
map[y][x] = 0
continue
map[y][x] += (map[y][x-1]+map[y-1][x])%1000000007
return map[n][m]
'코딩테스트' 카테고리의 다른 글
[Programmers][Level 3] 여행경로 (0) | 2023.04.02 |
---|---|
[Programmers][Level 2] 더 맵게 (0) | 2023.04.02 |
[Programmers][Level 0] 특이한 정렬 (0) | 2023.04.01 |
[Programmers][2020 KAKAO BLIND RECRUITMENT] 문자열 압축 (0) | 2023.03.23 |
[Programmers][2020 KAKAO BLIND RECRUITMENT] 자물쇠와 열쇠 (0) | 2023.03.21 |
Comments