본문 바로가기
알고리즘

[JAVA]백준 1057번: 토너먼트

by Kwoncorin 2020. 11. 14.
728x90

www.acmicpc.net/problem/1057

 

1057번: 토너먼트

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

www.acmicpc.net

 

1. 문제 설명

 

토너먼트에 참여한 김지민의 번호와 임한수의 번호가 주어졌을 때 김지민과 임한수가 대결하는 라운드 번호를 출력한다.

 

N이 짝수이면 다음 라운드에서 번호가 N/2가 되고, N이 홀수이면 다음 라운드에서 번호가 N/2+1가 되는 성질을 이용해서

 

N/2+N%2를 다음 번호로 설정했다. 만약 김지민과 임한수의 다음 번호가 같다면 현재 라운드에서 만난다.

 

2. 코드

import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner scan=new Scanner(System.in);

        int total,kim,han;
        int round=1;

        total=scan.nextInt();
        kim=scan.nextInt();
        han=scan.nextInt();

        int kim_round=kim/2+kim%2;
        int han_round=han/2+han%2;



        while(kim_round!=han_round){
            kim_round=kim_round%2+kim_round/2;
            han_round=han_round%2+han_round/2;
            round++;
        }

        System.out.println(round);


        scan.close();

    }





}
728x90