[프로그래머스] 예상 대진표
Programmers - [2017 팁스타운] 짝지어 제거하기
사용 언어 - C++
소요 시간 - 약 12분
정답 여부 - O
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/12985
문제 요약
- N명이 참가하는 토너먼트에서 1 ~ N을 차례대로 부여
- 1 - 2 / 3 - 4 끼리 게임을 진행
- 승자가 다음 라운드로 진출해 1 ~ N/2를 차례대로 부여
- 최후의 1명이 남을 때까지 반복
- 이 때, 주어진 번호를 가진 특정 두 명이 만나게 될 때까지 진행되는 라운드의 수를 return
최종 코드
using namespace std;
int solution(int n, int a, int b)
{
int answer = 0;
while(a != b)
{
a = a / 2 + a % 2;
b = b / 2 + b % 2;
answer++;
}
return answer;
}
풀이 절차
- 총 16명이 참가한다고 가정
- ⭐은 3번 부여
- ❤️는 9번 부여
- 첫 번째 라운드가 진행된 후, ⭐은 2번, ❤️는 5번이됨
- 두 번째 라운드가 진행된 후, ⭐은 1번, ❤️는 3번이됨
- 세 번째 라운드가 진행된 후, ⭐은 1번, ❤️는 2번이됨
- 네 번째 라운드에서 ⭐과 ❤️가 만나게 됨
- return 4
트러블 슈팅
- X
문제 풀이 후 소감
- 문제 자체가 크게 어렵지 않아서 푸는데도 어렵지는 않았다