일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- google cloud
- html
- google 로그인
- react native
- JPA
- javascript
- 커스텀 데이터 학습
- 순환참조
- OG tag
- 졸프
- 양방향 매핑
- STT
- Expo
- @Transactional
- AWS
- matplotlib
- oauth
- C++
- skt fellowship 3기
- idToken
- 코드업
- 2021 제9회 문화공공데이터 활용경진대회
- Spring Boot
- google login
- pandas
- marksense.ai
- Spring
- YOLOv5
- yolo
- Loss Function
Archives
- Today
- Total
민팽로그
[백준 / BOJ] 1697번 : 숨바꼭질 본문
https://www.acmicpc.net/problem/1697
1697번: 숨바꼭질
수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일
www.acmicpc.net
문제
수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 1초 후에 2*X의 위치로 이동하게 된다.
수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지 구하는 프로그램을 작성하시오.
입력
첫 번째 줄에 수빈이가 있는 위치 N과 동생이 있는 위치 K가 주어진다. N과 K는 정수이다.
출력
수빈이가 동생을 찾는 가장 빠른 시간을 출력한다.
예제 입력
5 17
예제 출력
4
코드
#include <iostream>
#include <queue>
using namespace std;
int n, k, seconds;
bool visited[100001];
queue<int> q;
void bfs(int v) {
visited[v] = true;
q.push(v);
while (!q.empty()) {
int size = q.size();
while (size--) {
int x = q.front();
if (x == k) return;
q.pop();
if (x - 1 >= 0 && x - 1 <= 100000 && !visited[x - 1]) {
q.push(x - 1);
visited[x - 1] = true;
}
if (x + 1 <= 100000 && !visited[x + 1]) {
q.push(x + 1);
visited[x + 1] = true;
}
if (2 * x <= 100000 && !visited[2 * x]) {
q.push(2 * x);
visited[2 * x] = true;
}
}
seconds++;
}
}
int main() {
cin >> n >> k;
bfs(n);
cout << seconds;
return 0;
}
bfs를 사용하여, 각각의 좌표에서 이동할 수 있는 모든 좌표를 향하여 탐색한다. 탐색을 할 때, level이 증가할 때마다 초를 세어 주기 위해 큐의 사이즈를 구하여 반복문을 돌렸다. 반복문을 돌며 계속 탐색을 진행하다가 x값과 k값이 같아지면 리턴하면 끝이다.
'PS > 백준📖' 카테고리의 다른 글
[백준/BOJ] 1707: 이분 그래프 (0) | 2022.02.10 |
---|---|
[백준 / BOJ] 2206번: 벽 부수고 이동하기 (0) | 2022.01.17 |
[백준 / BOJ] 7576번: 토마토 (0) | 2022.01.13 |
[백준 / BOJ] 1012번: 유기농 배추 (0) | 2022.01.11 |
[백준 / BOJ] 2667번: 단지 번호붙이기 (0) | 2022.01.11 |