Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- spring cloud
- MSA
- 백준 파이썬
- 백준
- Spring
- MySQL
- 백준 16719
- java
- Spring Boot
- JVM
- Coroutine
- spring security
- 백준 16235
- 백준 19238
- 백준 15685
- re.split
- 웹어플리케이션 서버
- 백준 17626
- sql 기술면접
- JPA
- Kotlin
- 백준 16236
- springboot
- 백준 17779
- java 기술면접
- 프로그래머스
- with recursive
- spring oauth
- 파이썬
- 프로래머스
Archives
- Today
- Total
시작이 반
[백준] 13549번 (python 파이썬) 본문
SMALL
수빈이가 다음 장소로 갈 경우는 3가지이다.
x-1, x+1, 2x 하지만 x-1, x+1 의 경우는 시간이 1초가 걸리고 2x 는 0초가 걸린다.
즉 다익스트라 알고리즘을 사용하여 문제를 풀 수 있다. ( 각 경우로 갈 시간이 같다면 Bfs로 풀 수 있다. )
import heapq
import math
n, k = map(int, input().split(' '))
dist = [math.inf] * 100001
dx = [-1, 1, 2]
p_queue = list()
def dijkstra(start):
dist[start] = 0
heapq.heappush(p_queue, (dist[start], start))
while p_queue:
pop_dist, pop_vertex = heapq.heappop(p_queue)
if dist[pop_vertex] < pop_dist:
continue
if pop_vertex == k:
return
for i in range(3):
if i != 2:
nx = pop_vertex + dx[i]
go_dist = 1
else:
nx = pop_vertex * dx[i]
go_dist = 0
if nx < 0 or nx > 100000:
continue
sum_dist = go_dist + pop_dist
if dist[nx] > sum_dist:
dist[nx] = sum_dist
heapq.heappush(p_queue, (sum_dist, nx))
dijkstra(n)
print(dist[k])
LIST
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 17779번 (python 파이썬) (0) | 2021.04.19 |
---|---|
[백준] 17626번 (python 파이썬) (0) | 2021.04.17 |
[백준] 17140번 (python 파이썬) (0) | 2021.04.17 |
[백준] 17135번 (python 파이썬) (0) | 2021.04.16 |
[백준] 16235번 (python 파이썬) (0) | 2021.04.14 |