16953번: A →B
https://www.acmicpc.net/problem/16953
# 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
long a = Long.parseLong(st.nextToken());
long b = Long.parseLong(st.nextToken());
long count = 0;
while (a != b && b > a) {
if (b % 10 == 1) {
b /= 10;
count++;
} else if (b % 2 == 0) {
b /= 2;
count++;
} else {
System.out.println(-1);
return;
}
}
if (a == b) System.out.println(count + 1);
else System.out.println(-1);
br.close();
}
}
- B에서 일의 자리수가 1이거나 2로 나눌 수 있는지 검사하며 거꾸로 A로 만들어보면 되는 쉬운 문제였다.
- 조건에 해당되지 않으면 바로 리턴시켰지만 반례가 있어 출력 전에도 확실하게 두 수가 일치하는지 검사를 추가했다.
'코딩테스트 > 자바 문제풀이' 카테고리의 다른 글
[CLASS 1: 구현] 백준 2562 최댓값 (0) | 2024.10.01 |
---|---|
[CLASS 1: 구현] 백준 11720 숫자의 합 (0) | 2024.09.30 |
[그리디] 백준 20115 에너지 드링크 (0) | 2024.08.29 |
[그리디] 백준 20365 블로그(2) (0) | 2024.08.28 |
[그리디] 백준 13305 주유소 (0) | 2024.08.27 |