본문 바로가기
JAVA/프로그래머스

[Lv.2] 프로그래머스 - 예상 대진표 : Java

by ♡˖GYURI˖♡ 2024. 5. 20.
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

이해하기

제한사항에서 N이 2의 지수 승이라고 되어 있는 것을 보고 log2로 어떻게 나눠서 계산하는건가 싶었다.

규칙이 있을 것 같아서 이렇게 저렇게 풀이해보다가 결국 실패...

 

그래서 참고한 블로그⬇️

 

[프로그래머스] level2. 예상 대진표 (자바 JAVA)

[ 문제 ] [프로그래머스] level2. 예상 대진표 (자바 JAVA) 문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/12985 코딩테스트 연습 - 예상 대진표 △△ 게임대회가 개최되었습니다. 이 대회는 N명이

ilmiodiario.tistory.com

 

규칙을 알고나니 쉽게 느껴졌다. 그치만 바로 찾기는 어려워~~

 

첫번째 라운드에서 다음 라운드로 올라갈 때 어떤 순서를 가지게 되는지가 핵심이었다!

예를 들어 4번이 한 번 이겨서 다음 라운드로 올라갈 때는 2번 순서가 되고, 7번이 한 번 이겨서 다음 라운드로 올라갈 때는 4번이 된다.

이를 식으로 나타내면 n / 2 + n % 2라고 나타낼 수 있는데, 뒤의 n % 2는 홀수와 짝수를 구분하기 위함이라고 이해했다.

 

 

문제풀이

class Solution {
    public int solution(int n, int a, int b) {
        int answer = 0;
        
        while (true) {
            a = a / 2 + a % 2;
            b = b / 2 + b % 2;
            
            answer++;
            
            if (a == b) {
                break;
            }
        }
        
        return answer;
    }
}