이번 문제는 DFS 알고리즘을 재귀적으로 구현하여 해결했다.
#include <iostream>
#include <algorithm>
#define MAX 1000000
using namespace std;
long long a, b;
long long cnt=1;
long long result=MAX;
void Input(){
cin>>a>>b;
}
void DFS(long long n, long long cnt){
if(n==b){
result=min(cnt, result);
}
if(n>b)
return;
DFS(n*2, cnt+1);
DFS((n*10)+1, cnt+1);
}
void Solution(){
DFS(a, cnt);
if(result==MAX){
cout<<-1<<endl;
}
else{
cout<<result<<endl;
}
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
Input();
Solution();
return 0;
}
이번에 또 수의 범위를 신경쓰지 않고 int형으로 사용했다가 오답처리를 당했다. 수의 범위를 신경쓰며 구현하자.