Java/Baekjoon

[Baekjoon] 16953번 A -> B (Java)

다콩잉 2022. 8. 29. 01:56

예제 입력1

2 162

예제 출력1

5

 

 

예제 입력2

4 42

예제 출력2

-1

 

 

예제 입력3

100 40021

예제 출력3

5

 

package Q16953;

import java.util.Scanner;

public class Main {
	static long x, y;
	static int cnt;
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		
		x = scan.nextLong();
		y = scan.nextLong();
		
		cnt = 0;
		while(y > x) {		
			cnt += 1;
			search();
		}
		if(y == x) { cnt += 1;}
		else { cnt = -1; }
		System.out.println(cnt);
	}
	
	public static void search() {
		String Y = Long.toString(y);
		String[] Y2 = Y.split("");
		if(y % 2 == 0) {	// 2로 나눌 수 있다면 2로 나눔
			y = y/2;
		}
		else if(Y2[Y2.length-1].equals("1")){	// 마지막 숫자가 1이면 1을 제거해줌
			Y = Y.substring(0, Y.length()-1);
			y = Integer.parseInt(Y);
		}else {				// 2로 나누지도 못하고 마지막 숫자가 1이 아니면 반복분 빠져나감
			cnt = -1;
			y = -1;
		}
	}
}

정말 최근에 푼 문제 중에 가장 쉬웠다.

문제 푸는데 걸린 시간은 10분..? 정도였는데 계속 정답이 아니라길래 잘못된 방식인가 했는데데이터 타입을 int가 아닌 long으로 하지 않아서 계속 오답이 나왔다....나중엔 long인걸 알고 바꾸었지만 nextInt를 nextLong으로 고치지 않아서 또 계속 오답이 나왔다...ㅋㅅㅋ결론은 숫자 범위 확인은 필수고 이런 쉬운 문제만 있었으면 좋겠다!!!!!!!!!!!!!!!!!!!!!!!

 

728x90