알고리즘/BaekJoon
[c++] 1697번 : 숨바꼭질
__jhp_+
2022. 6. 14. 18:52
https://www.acmicpc.net/problem/1697
1697번: 숨바꼭질
수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일
www.acmicpc.net
#include <iostream>
#include <queue>
using namespace std;
bool bPoint[100001] = { false, };
int countOfMove(int depart, int dest);
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
int count = 0;
int N, K;
cin >> N >> K;
count = countOfMove(N, K);
cout << count << '\n';
return 0;
}
int countOfMove(int depart, int dest)
{
queue<int> q;
int count = 0;
bPoint[depart] = true;
q.push(depart);
while (q.empty() == false)
{
int size = q.size();
for (int i = 0; i < size; ++i)
{
int cur = q.front();
q.pop();
if (cur == dest) {
return count;
}
else
{
bPoint[cur] = true;
if (cur - 1 >= 0 && bPoint[cur - 1] == false)
{
q.push(cur - 1);
}
if (cur + 1 <= 100000 && bPoint[cur + 1] == false)
{
q.push(cur + 1);
}
if (cur * 2 <= 100000 && bPoint[cur * 2] == false)
{
q.push(cur * 2);
}
}
}
++count;
}
return count;
}