https://www.acmicpc.net/problem/1697
๋ฌธ์
์๋น์ด๋ ๋์๊ณผ ์จ๋ฐ๊ผญ์ง์ ํ๊ณ ์๋ค. ์๋น์ด๋ ํ์ฌ ์ N(0 ≤ N ≤ 100,000)์ ์๊ณ , ๋์์ ์ K(0 ≤ K ≤ 100,000)์ ์๋ค. ์๋น์ด๋ ๊ฑท๊ฑฐ๋ ์๊ฐ์ด๋์ ํ ์ ์๋ค. ๋ง์ฝ, ์๋น์ด์ ์์น๊ฐ X์ผ ๋ ๊ฑท๋๋ค๋ฉด 1์ด ํ์ X-1 ๋๋ X+1๋ก ์ด๋ํ๊ฒ ๋๋ค. ์๊ฐ์ด๋์ ํ๋ ๊ฒฝ์ฐ์๋ 1์ด ํ์ 2*X์ ์์น๋ก ์ด๋ํ๊ฒ ๋๋ค.
์๋น์ด์ ๋์์ ์์น๊ฐ ์ฃผ์ด์ก์ ๋, ์๋น์ด๊ฐ ๋์์ ์ฐพ์ ์ ์๋ ๊ฐ์ฅ ๋น ๋ฅธ ์๊ฐ์ด ๋ช ์ด ํ์ธ์ง ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ ๋ฒ์งธ ์ค์ ์๋น์ด๊ฐ ์๋ ์์น N๊ณผ ๋์์ด ์๋ ์์น K๊ฐ ์ฃผ์ด์ง๋ค. N๊ณผ K๋ ์ ์์ด๋ค.
์ถ๋ ฅ
์๋น์ด๊ฐ ๋์์ ์ฐพ๋ ๊ฐ์ฅ ๋น ๋ฅธ ์๊ฐ์ ์ถ๋ ฅํ๋ค.
ํ์ด
#include <iostream>
#include <queue>
using namespace std;
int main() {
ios_base :: sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
int ans=0;
vector<int> dis(100001, -1);
queue<int> q;
// ์
๋ ฅ
int n, k;
cin >> n >> k;
// ์ฐ์ฐ
dis[n] = 0;
q.push(n);
while(!q.empty()) {
int cur = q.front();
q.pop();
if(cur == k) {
cout << dis[cur];
break;
}
for(int dir=0; dir<3; dir++) {
int next;
if(dir==0) next = cur+1;
else if(dir==1) next = cur-1;
else next = cur*2;
if(next<0 || next>100000)
continue;
if(dis[next] != -1)
continue;
dis[next] = dis[cur]+1;
q.push(next);
}
}
return 0;
}
'๐ BOJ > Class 2' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ][C++] ๋ฐฑ์ค 108282๋ฒ: ์คํ (0) | 2023.03.15 |
---|---|
[BOJ][C++] ๋ฐฑ์ค 11650๋ฒ: ์ขํ ์ ๋ ฌํ๊ธฐ (0) | 2023.03.13 |
[BOJ][C++] ๋ฐฑ์ค 11050๋ฒ: ์ดํญ ๊ณ์ 1 (0) | 2023.02.28 |
[BOJ][C++] ๋ฐฑ์ค 1978๋ฒ: ์์ ์ฐพ๊ธฐ (0) | 2023.02.23 |
[BOJ][C++] ๋ฐฑ์ค 2798๋ฒ: ๋ธ๋์ญ (0) | 2023.02.13 |