알고리즘
[백준] 1057번(토너먼트) with Java
철갑
2020. 9. 27. 18:07
728x90
문제
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