알고리즘 문제 풀이

백준 16953 A -> B (Java 자바)

superbono 2021. 3. 28. 16:00
import java.util.Scanner;

public class bj16953_a에서b {
	static long A, B;
	static int res, cnt;
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		A = sc.nextInt();
		B = sc.nextInt();
		
		res = -1;
		
		dfs(A, 0);
		System.out.println(res);
	}
	
	static void dfs(long cur, int cnt) {
		if(cur > B) return;
		if(cur == B) {
			res = cnt + 1;
			return;
		}
		
		dfs(cur * 10 + 1, cnt + 1);
		dfs(cur * 2, cnt + 1);
		
	}
}


// A, B를 int로 받으면 틀렸습니다 뜨기 떄문에 
// long으로 바꾸었더니 뜨지 않았다. 
// 아마 2를 곱하는 연산에서 int의 범위를 벗어나 오버플로우가 발생할 가능성이 있어서인 것 같다.