[백준 1057번 문제, JAVA] 토너먼트

2023. 3. 9. 17:32·정리 전 게시글/공부 관련

문제

김지민은 N명이 참가하는 스타 토너먼트에 진출했다. 토너먼트는 다음과 같이 진행된다. 일단 N명의 참가자는 번호가 1번부터 N번까지 배정받는다. 그러고 난 후에 서로 인접한 번호끼리 스타를 한다. 이긴 사람은 다음 라운드에 진출하고, 진 사람은 그 라운드에서 떨어진다. 만약 그 라운드의 참가자가 홀수명이라면, 마지막 번호를 가진 참가자는 다음 라운드로 자동 진출한다. 다음 라운드에선 다시 참가자의 번호를 1번부터 매긴다. 이때, 번호를 매기는 순서는 처음 번호의 순서를 유지하면서 1번부터 매긴다. 이 말은 1번과 2번이 스타를 해서 1번이 진출하고, 3번과 4번이 스타를 해서 4번이 진출했다면, 4번은 다음 라운드에서 번호 2번을 배정받는다. 번호를 다시 배정받은 후에 한 명만 남을 때까지 라운드를 계속 한다.

마침 이 스타 대회에 임한수도 참가했다. 김지민은 갑자기 스타 대회에서 우승하는 욕심은 없어지고, 몇 라운드에서 임한수와 대결하는지 궁금해졌다. 일단 김지민과 임한수는 서로 대결하기 전까지 항상 이긴다고 가정한다. 1 라운드에서 김지민의 번호와 임한수의 번호가 주어질 때, 과연 김지민과 임한수가 몇 라운드에서 대결하는지 출력하는 프로그램을 작성하시오.


코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String[] input = br.readLine().split("\\s+");
        int[] user = new int[2];
        user[0] = Integer.parseInt(input[1]);
        user[1] = Integer.parseInt(input[2]);

        int count = 0;
        while (user[0] != user[1]) {
            if (user[0] > 1) {
                user[0] = (int) Math.ceil((float) user[0] / 2);
            }

            if (user[1] > 1) {
                user[1] = (int) Math.ceil((float) user[1] / 2);
            }

            count++;
        }
        System.out.println(count);
    }
}

해결

인원수가 11명이고 5번째, 9번째가 만날 때 까지 대진표를 그려봤다

그랬더니 현재 번호를 2로 나누었을 때 나머지를 올림한 것으로 계속 나와서 계속 그려봤는데

몫이 1일 때 까지 반복한 횟수가 경기 횟수가 되는 것을 볼 수 있었다


참고

링크

 

 

 

 

저작자표시 (새창열림)

'정리 전 게시글 > 공부 관련' 카테고리의 다른 글

[백준 1076번 문제, JAVA] 저항  (1) 2023.03.12
[백준 1019번 문제, JAVA] 책 페이지  (0) 2023.03.12
[백준 1032번 문제, JAVA] 명령 프롬프트  (0) 2023.03.08
프로그래밍 입문 학습 노트 (1)  (0) 2023.03.06
[백준 2477번 문제, JAVA] 참외밭  (0) 2023.03.06
'정리 전 게시글/공부 관련' 카테고리의 다른 글
  • [백준 1076번 문제, JAVA] 저항
  • [백준 1019번 문제, JAVA] 책 페이지
  • [백준 1032번 문제, JAVA] 명령 프롬프트
  • 프로그래밍 입문 학습 노트 (1)
aptenia
aptenia
공부하면서 배운 것들
  • aptenia
    새벽의 아이디어
    aptenia
  • 전체
    오늘
    어제
    • 분류 전체보기 (279)
      • 논문 (0)
      • Roboracer (2)
      • 개발 아무거나 (1)
      • 일상 아무거나 (2)
      • 정리 전 게시글 (268)
        • 개발 관련 (25)
        • 정보 관련 (19)
        • 공부 관련 (224)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 네이버 블로그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    캡스톤디자인
    이것이자바다확인문제
    C++강좌
    티스토리스킨편집
    컨텍스트스위칭
    C언어
    백준
    C언어강좌
    마인크래프트스크립트
    이것이자바다연습문제
    스크롤바CSS
    마인크래프트
    프로그래머스
    공개SW개발자대회
    티스토리HTML
    마크스크립트
    일본규슈공업대학교
    c언어초보
    이것이자바다
    반복하지않는수
    프로그래머스PCCE
    콜라츠추측
    자바
    빅데이터공모전
    티스토리반응형2스킨편집
    마크
    마인크래프트강화스크립트
    안드로이드
    파이어베이스
    파이썬
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
aptenia
[백준 1057번 문제, JAVA] 토너먼트
상단으로

티스토리툴바