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;
}
'π Cpp > [Solved.ac] Class2~4' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[BOJ][C++] λ°±μ€ 11650λ²: μ’ν μ λ ¬νκΈ° (0) | 2023.03.13 |
---|---|
[BOJ][C++] λ°±μ€ 11724λ²: μ°κ²° μμμ κ°μ (0) | 2023.03.01 |
[BOJ][C++] λ°±μ€ 11050λ²: μ΄ν κ³μ 1 (0) | 2023.02.28 |
[BOJ][C++] λ°±μ€ 11726λ²: 2xn νμΌλ§ (0) | 2023.02.23 |
[BOJ][C++] λ°±μ€ 1978λ²: μμ μ°ΎκΈ° (0) | 2023.02.23 |