λ¬Έμ
μλΉμ΄λ λμκ³Ό μ¨λ°κΌμ§μ νκ³ μλ€. μλΉμ΄λ νμ¬ μ N(0 ≤ N ≤ 100,000)μ μκ³ , λμμ μ K(0 ≤ K ≤ 100,000)μ μλ€. μλΉμ΄λ κ±·κ±°λ μκ°μ΄λμ ν μ μλ€. λ§μ½, μλΉμ΄μ μμΉκ° XμΌ λ κ±·λλ€λ©΄ 1μ΄ νμ X-1 λλ X+1λ‘ μ΄λνκ² λλ€. μκ°μ΄λμ νλ κ²½μ°μλ 1μ΄ νμ 2*Xμ μμΉλ‘ μ΄λνκ² λλ€.
μλΉμ΄μ λμμ μμΉκ° μ£Όμ΄μ‘μ λ, μλΉμ΄κ° λμμ μ°Ύμ μ μλ κ°μ₯ λΉ λ₯Έ μκ°μ΄ λͺ μ΄ νμΈμ§ ꡬνλ νλ‘κ·Έλ¨μ μμ±νμμ€.
μ λ ₯
첫 λ²μ§Έ μ€μ μλΉμ΄κ° μλ μμΉ Nκ³Ό λμμ΄ μλ μμΉ Kκ° μ£Όμ΄μ§λ€. Nκ³Ό Kλ μ μμ΄λ€.
μΆλ ₯
μλΉμ΄κ° λμμ μ°Ύλ κ°μ₯ λΉ λ₯Έ μκ°μ μΆλ ₯νλ€.
ννΈ
μλΉμ΄κ° 5-10-9-18-17 μμΌλ‘ κ°λ©΄ 4μ΄λ§μ λμμ μ°Ύμ μ μλ€.
λ°±μ€ μ€λ²1.
1. dfsμΈμ€ μκ³ μ΄μ¬ν νλ€κ° μ¬κ·κ° κ³μ ν°μ Έμ μ΄μν¨μ λλ
2. bfsλ‘ νμ΄μΌ νλ λ¬Έμ μμ ^^.....
3. μ νμλ€κ³ μκ°νλλ° μ μΆνλ OutOfBoundsκ° λ λ²λ¦Ό
4. μ§λ¬Έ κ²μνμ λλ λκ°μ μ¬λμ΄ μμμ. ν΄~
νμ 체ν¬ν λ λ²μ μ²΄ν¬ λ¨Όμ νκ³ λμ visited νλμ§ μ²΄ν¬ν΄μΌ λ²μλ₯Ό λ²μ΄λμ§ μμ!
κΈ°μ΅νμ. 쑰건λ°μ§λ λ²μ 체ν¬κ° μ°μ μ΄λ€!!!
λμ νμ΄
#include <iostream>
#include <queue>
using namespace std;
int n;
int k;
int visited[100002]={0,};
bool canGo(int num){
if(num<0 || num>100000) return false; // λ²μκ²μ¬ λ¨Όμ ν΄μΌ outofboundsκ° λ¨μ§ μμ
if(visited[num]==1) return false;
return true;
}
void bfs(int i){
int dist[100002] = {0,};
queue<int> q;
q.push(n);
visited[n] = 1;
while(!q.empty()){
int a = q.front();
q.pop();
if(canGo(a+1)){
q.push(a + 1);
visited[a + 1] = 1;
dist[a + 1] = dist[a] + 1;
}
if(canGo(a-1)){
q.push(a - 1);
visited[a - 1] = 1;
dist[a - 1] = dist[a] + 1;
}
if(canGo(a*2)){
q.push(a * 2);
visited[a * 2] = 1;
dist[a * 2] = dist[a] + 1;
}
}
cout << dist[k];
return;
}
int main(){
cin >> n >> k;
bfs(n);
}
'π μκ³ λ¦¬μ¦ > BOJ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[C++/BOJ] 1309 : λλ¬Όμ (DP) (0) | 2023.02.23 |
---|---|
[C++/BOJ] 2225 : ν©λΆν΄ (DP) (0) | 2023.02.23 |
[C++/BOJ] 14940 : μ¬μ΄ μ΅λ¨κ±°λ¦¬ (BFS) / test case (0) | 2023.02.22 |
[C++/BOJ] 2149 : μνΈ ν΄λ (0) | 2023.02.22 |
[C++/BOJ] 2293 : λμ 1 (0) | 2023.02.22 |