철갑이의 이모저모

[백준] 1057번(토너먼트) with Java 본문

알고리즘

[백준] 1057번(토너먼트) with Java

철갑 2020. 9. 27. 18:07
728x90

문제

www.acmicpc.net/problem/1057

 

1057번: 토너먼트

김지민은 N명이 참가하는 스타 토너먼트에 진출했다. 토너먼트는 다음과 같이 진행된다. 일단 N명의 참가자는 번호가 1번부터 N번까지 배정받는다. 그러고 난 후에 서로 인접한 번호끼리 스타를

www.acmicpc.net

풀이

토너먼트 표를 그려서 규칙을 찾아 보았다.

김지민의 경우 8 -> 4 -> 2 -> 1 번째로 즉, 현재번호/2 + 0 로 표현할 수 있다.

임한수의 경우 9 -> 5 -> 3 -> 1 번째로 즉, 현재번호/2 + 1 로 표현할 수 있다.

짝수일 때 홀수일 때로 나누기엔 복잡해지는 것 같아 둘 다 (현재번호/2 + 현재번호/2의 나머지) 로 처리하였다.

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n=sc.nextInt();
		int z =sc.nextInt();
		int h =sc.nextInt();
		int cnt=0;
		
		while(z != h) {
			z = z/2 + z%2;
			h = h/2 + h%2;
			cnt++;
		}
		System.out.println(cnt);
	}
}

728x90