Algorithm/백준 알고리즘

백준_16953 A->B (자바) / 탐색

미스터로즈 2021. 11. 23. 09:36

시간&메모리 제한

 

문제

 

입력&출력

 

문제풀이

package com.Back;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Back_16953 {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		
		int A = Integer.parseInt(st.nextToken());
		int B = Integer.parseInt(st.nextToken());
		
		int ans =1;
		
		while(true) {
			if(A==B) {
				break;
			}
			if(A>B) {
				ans = -1;
				break;
			}
			String tmp = String.valueOf(B);
			if(B%2!=0 && tmp.charAt(tmp.length()-1)!='1') {
				ans = -1;
				break;
			}
			
			if(B%2==0) {
				B/=2;
			}else {
				tmp = tmp.substring(0,tmp.length()-1);
				B = Integer.parseInt(tmp);
			}
			
			ans++;
		}
		System.out.println(ans);
	}
}

 

※ 내 생각

이 문제는 탐색을 활용하는 문제입니다.

각 문자에 대해서 탐색을 진행하고 문제를 해결할 수 있습니다.
A가 아닌 B를 기준으로 진행을 하고, B에 따라 조건을 보고
해당하지 않으면 예외로 처리하여 while문을 나가게 만들어줍니다.