문제링크 : https://www.acmicpc.net/problem/1057
문제풀이
문제에서 라운드마다 번호가 1부터 다시 매겨진다고 했던 것이 힌트인 것 같다.
테스트 케이스를 예로 들면, 8번 9번은 라운드가 끝날 때 마다 아래와 같이 번호가 바뀐다.
8 → 4 → 2 → 1
9 → 5 → 3 → 2
결국 김지민과 임한수의 번호가 같게 되면, 그 라운드에서 대결을 하게 된다.
서로 대결을 하지 않는 경우 -1을 출력하라고 해서 while문에 조건을 어떻게 추가해야 하나 고민했는데..
김지민과 임한수는 서로 대결하기 전까지 항상 이긴다는 조건이 있으므로, 대결을 하지 않는 경우는 없는 것 같다.
소스코드
package baekjoon; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; import java.io.IOException; public class P1057 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int N = Integer.parseInt(st.nextToken()); int a = Integer.parseInt(st.nextToken()); int b = Integer.parseInt(st.nextToken()); int count = 0; while (a != b) { a = (a + 1) / 2; b = (b + 1) / 2; count++; } System.out.println(count); br.close(); } }
'Algorithm > 문제풀이' 카테고리의 다른 글
[백준] 2217번: 로프 (2) | 2019.07.12 |
---|---|
[백준] 11812번: K진 트리 (0) | 2019.07.12 |
[백준] 1149번: RGB거리 (0) | 2019.07.05 |
[백준] 2562번: 최댓값 (0) | 2019.07.05 |
[백준] 2164번: 카드2 (0) | 2019.07.05 |