반응형
import java.util.Scanner;
// 1057 토너먼트
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int Kim = sc.nextInt();
int Lim = sc.nextInt();
int cnt = 0;
if (N < Kim || N < Lim) {
cnt = -1;
} else {
while (true) {
if (Kim == Lim)
break;
else {
Kim = (Kim + 1) / 2;
Lim = (Lim + 1) / 2;
cnt++;
}
}
}
System.out.println(cnt);
}
}
시뮬레이션 문제이다. 풀이를 보면 간단하지만, 간단한 풀이방법을 생각해내기가 어려웠다.
< 문제 풀이 >
1. 김지민과 임한수의 번호가 참가자의 수보다 크면 서로 대결할 수 없으므로 -1을 출력한다.
2. 김지민과 임한수의 번호에 1씩 더해서 2로 나누면서 같을 때 까지 반복하고 반복할 때 마다 cnt를 증가시켜서 마지막에 cnt를 출력하면 대결하는 라운드 번호가 출력된다.
반응형
'알고리즘 > 문제풀이' 카테고리의 다른 글
[2293] 동전 (0) | 2019.03.31 |
---|---|
[1012] 유기농 배추 (0) | 2019.03.31 |
[1966] 프린터 큐 (0) | 2019.03.31 |
[11403] 경로 찾기 (0) | 2019.03.25 |
[2468] 안전 영역 (0) | 2019.03.25 |