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