본문 바로가기

코딩테스트/프로그래머스

[프로그래머스] 예상 대진표

728x90
반응형


🔗 문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/12985#

 

프로그래머스

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

programmers.co.kr


728x90

👩‍💻 코드

#include <iostream>

using namespace std;

int solution(int n, int a, int b){
    int answer = 1;

    while((a + 1) / 2 != (b + 1) / 2){
        answer++;
        a = (a + 1) / 2;
        b = (b + 1) / 2;
    }

    return answer;
}

📝 풀이

1번 째 라운드부터 시작하니 answer도 1부터 시작.

 

같은 대진인지 확인하기 위해 1을 더하고 2로 나눈 몫을 비교한다.

처음 대진 [1, 2] [3, 4] [5, 6] [7, 8]
1을 더한다👉 [2, 3] [4, 5] [6, 7] [8, 9]
2로 나눈 몫👉 [1, 1] [2, 2] [3, 3] [4, 4]

 

같은 대진일 때 까지 경기를 진행한다.

결과는 무조건 승리하니까 위와 같은 방식을 사용하여 다음 번호를 부여 받는다.

처음 대진 [1, 2] [3, 4] [5, 6] [7, 8]
1을 더한다👉 [2, 3] [4, 5] [6, 7] [8, 9]
2로 나눈 몫👉 [1, 1] [2, 2] [3, 3] [4, 4]
다음 경기 대진👉 [1, 2] [3, 4]    

 

이 과정을 같은 대진 될 때 까지 반복 한 후 계산된 경기수(answer)을 return 한다.

728x90
반응형