728x90
반응형
https://www.acmicpc.net/problem/13549
13549번: 숨바꼭질 3
수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일
www.acmicpc.net
풀이
이 문제는 다른 숨바꼭질 문제와 다른게 가중치가 다른 문제이다 순간이동을 하면 가중치가 0이고 다른 상황은 가중치가 1이다. 가중치가 0인 상황은 먼저 계산해 주어야 하기 때문에 appendleft를해서 덱의 앞에 추가한다. 그래서 모든 상황에서 X*2를 우선적으로 생각해준다.
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
|
from collections import deque
n,k=map(int, input().split())
#해당 인덱스 값에 도달하기 위한 최단 거리 기록
arr=[-1]*(10**5+1)
def bfs(start,end):
deq=deque()
deq.append(start)
arr[start]=0
while deq:
X=deq.popleft()
if X==end:
break
if 0<2*X<=100000 and arr[2*X]==-1:
arr[2*X]=arr[X]
deq.appendleft(2*X)
if 0<X+1<=100000 and arr[X+1]==-1:
arr[X+1]=arr[X]+1
deq.append(X+1)
if 0<=X-1<=100000 and arr[X-1]==-1:
arr[X-1]=arr[X]+1
deq.append(X-1)
bfs(n,k)
print(arr[k])
|
cs |
728x90
반응형
'Python3 > 백준 알고리즘' 카테고리의 다른 글
2022.02.14 [백준] (python 파이썬) 바이러스 (0) | 2022.02.14 |
---|---|
2022.02.14 [백준] (python 파이썬) 미로 탐색 (0) | 2022.02.14 |
2022.02.13 [백준] (python 파이썬) 숨바꼭질2 (0) | 2022.02.13 |
2022.02.13 [백준] (python 파이썬) 숨바꼭질 (0) | 2022.02.13 |
2022.02.13 [백준] (python 파이썬) 유기농 배추 (0) | 2022.02.13 |
댓글