문제풀이/백준oj

[백준OJ] 16953번 A->B

Hyeon-Uk 2021. 6. 6. 19:49
반응형

https://www.acmicpc.net/problem/16953

 

16953번: A → B

첫째 줄에 A, B (1 ≤ A < B ≤ 109)가 주어진다.

www.acmicpc.net


 

-풀이-

 

dfs를 이용하여 모든 경우를 탐색하며, a==b일경우가 되면 , cnt값을 갱신했다.

 

-코드-

#include<iostream>
#include<algorithm>
#include<limits.h>
using namespace std;

long long answer = LLONG_MAX;

void dfs(long long a,long long b,long long cnt) {
	if (a == b) {
		answer = min(answer, cnt);
		return;
	}
	else if (a > b) {
		return;
	}
	else {
		dfs(a * 2, b, cnt + 1);
		dfs(a * 10 + 1, b, cnt + 1);
	}
}

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	long long a, b;
	cin >> a >> b;
	dfs(a, b,1);
	if (answer == LLONG_MAX) answer = -1;
	cout << answer << "\n";
	return 0;
}
반응형