본문 바로가기

알고리즘/문제풀이

[1057] 토너먼트

반응형

https://www.acmicpc.net/problem/1057


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