Skip to content

Commit 0990f20

Browse files
committed
[Silver I] Title: 숨바꼭질, Time: 172 ms, Memory: 16840 KB -BaekjoonHub
1 parent 629c58f commit 0990f20

2 files changed

Lines changed: 79 additions & 0 deletions

File tree

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# [Silver I] 숨바꼭질 - 1697
2+
3+
[문제 링크](https://www.acmicpc.net/problem/1697)
4+
5+
### 성능 요약
6+
7+
메모리: 16840 KB, 시간: 172 ms
8+
9+
### 분류
10+
11+
그래프 이론, 그래프 탐색, 너비 우선 탐색
12+
13+
### 제출 일자
14+
15+
2026년 2월 15일 11:48:15
16+
17+
### 문제 설명
18+
19+
<p>수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 1초 후에 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: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
let input = require('fs').readFileSync('./dev/stdin').toString().trim().split('\n');
2+
let [N, K] = input[0].split(' ').map(Number);
3+
let arr = Array(100001).fill(-1);
4+
let dist = Array(100001).fill(-1);
5+
6+
arr[N] = 0;
7+
arr[K] = 'K';
8+
9+
let q = [];
10+
let head = 0;
11+
q.push(N);
12+
dist[N] = 0;
13+
14+
while (head < q.length) {
15+
let x = q[head++];
16+
let dx = [-1, 1, x];
17+
18+
for (let i = 0; i < 3; i++) {
19+
let nx = x + dx[i];
20+
21+
if (nx < 0 || nx > 100001) {
22+
continue;
23+
}
24+
25+
if (dist[nx] !== -1) {
26+
continue;
27+
}
28+
29+
q.push(nx);
30+
dist[nx] = dist[x] + 1;
31+
}
32+
}
33+
34+
console.log(dist[K]);
35+
36+
// 시간
37+
38+
// 발산
39+
// 수빈이 위치 N, 동생 위치를 K
40+
// if (2N) === k 굳 , < K 그럼 OK, > K면 현재 위치에서 가는게 빠른지 아니면 2를 해서 - 하는게 빠른지를 봐야함.
41+
// 근데 왜 BFS냐 이게 ...?
42+
// 아.. distance로 생각해서 그냥 다 전파시키면 되는구나
43+
// 10만까지 전부 최소 dist를 구하면 됨 그리고 동생 위치 값을 그 배열 인덱스에 넣으면 답이긴 하네.
44+
45+
// 수렴
46+
// 10만짜리 -1 배열
47+
// 수빈이랑 동생 위치를 표시 N, K 로
48+
// 수빈이 위치를 시작으로 BFS 시작
49+
// +1, -1, *2

0 commit comments

Comments
 (0)