ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Baekjoon] 16953번 A -> B (Java)
    Java/Baekjoon 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
Designed by Tistory.