[백준 알고리즘] 1057번 토너먼트

yeoj1n·2일 전
0

풀이방법

위 그림과 같이 인접한 번호 (1,2 | 3,4 | 5,6 | ...)끼리 대결을 하는 방식이고 김지연과 임한수는 무조건 대결에서 이긴다고 가정한다.

둘이 대결하게 될 round에서 둘의 번호는 같아야하고
다음 round로 넘어갈 때 번호는
현재 홀수 번호인 경우 : 현재 번호 / 2 + 1
현재 짝수 번호인 경우 : 현재 번호 / 2
가 된다.

이런 식으로 회를 거듭하면서 둘이 대결하는 round 를 구하면 된다.

토너먼트 방식이기 때문에 둘은 무조건 대결하게 되어있다. 따라서 -1을
출력하는 경우는 없다.

소스코드

	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 kim = Integer.parseInt(st.nextToken());
		int lim = Integer.parseInt(st.nextToken());
		int round = 0;
		
		while(kim != lim) {
			kim = kim/2 + kim%2;
			lim = lim/2 + lim%2;
			round++;
		}
		System.out.println(round);
	}

0개의 댓글