Skip to content

Commit 32c6285

Browse files
committed
[Gold V] Title: 숨바꼭질 3, Time: 140 ms, Memory: 113652 KB -BaekjoonHub
1 parent 5e0c104 commit 32c6285

2 files changed

Lines changed: 53 additions & 0 deletions

File tree

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# [Gold V] 숨바꼭질 3 - 13549
2+
3+
[문제 링크](https://www.acmicpc.net/problem/13549)
4+
5+
### 성능 요약
6+
7+
메모리: 113652 KB, 시간: 140 ms
8+
9+
### 분류
10+
11+
0-1 너비 우선 탐색, 너비 우선 탐색, 데이크스트라, 그래프 이론, 그래프 탐색, 최단 경로
12+
13+
### 제출 일자
14+
15+
2025년 4월 28일 13:13:49
16+
17+
### 문제 설명
18+
19+
<p>수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 0초 후에 2*X의 위치로 이동하게 된다.</p>
20+
21+
<p>수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지 구하는 프로그램을 작성하시오.</p>
22+
23+
### 입력
24+
25+
<p>첫 번째 줄에 수빈이가 있는 위치 N과 동생이 있는 위치 K가 주어진다. N과 K는 정수이다.</p>
26+
27+
### 출력
28+
29+
<p>수빈이가 동생을 찾는 가장 빠른 시간을 출력한다.</p>
30+
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
from collections import deque
2+
3+
N, K = map(int, input().split())
4+
dist = [float('inf')] * 100001
5+
6+
q = deque([(N)])
7+
dist[N] = 0
8+
while q:
9+
now = q.popleft()
10+
11+
if now == K:
12+
print(dist[now])
13+
break
14+
15+
if 0 <= now * 2 <= 100000 and dist[now*2] > dist[now]:
16+
q.appendleft((now*2))
17+
dist[now*2] = dist[now]
18+
if 0 <= now + 1 <= 100000 and dist[now+1] > dist[now] + 1:
19+
q.append((now+1))
20+
dist[now+1] = dist[now] + 1
21+
if 0 <= now - 1 <= 100000 and dist[now-1] > dist[now] + 1:
22+
q.append((now-1))
23+
dist[now-1] = dist[now] + 1

0 commit comments

Comments
 (0)