알고리즘/PS - 프로그래머스
[프로그래머스 - C++, Java] 예상 대진표
excited-hyun
2021. 7. 23. 15:49
반응형
https://programmers.co.kr/learn/courses/30/lessons/12985
코딩테스트 연습 - 예상 대진표
△△ 게임대회가 개최되었습니다. 이 대회는 N명이 참가하고, 토너먼트 형식으로 진행됩니다. N명의 참가자는 각각 1부터 N번을 차례대로 배정받습니다. 그리고, 1번↔2번, 3번↔4번, ... , N-1번↔N
programmers.co.kr
풀이
백준에도 이 문제랑 동일한 문제가 있습니당..
(1,2)는 다음 라운드에서 1이, (3, 4)는 다음 라운드에서 2가 되는데요.
여기서 규칙이 하나 나옵니다.
다음 라운드에 배정되는 숫자 = (현재 숫자 + 1) / 2
따라서 이 규칙을 이용해 다음 라운드에 배정되는 수가 서로 동일해질 때까지 반복하고 동일해질 때 까지 몇번을 반복한지 세주면 됩니다.
<c++ 코드>
#include <iostream>
using namespace std;
int solution(int n, int a, int b)
{
int answer = 0;
while(a!=b){
a = (a+1)/2;
b = (b+1)/2;
answer++;
}
return answer;
}
<Java 코드>
class Solution
{
public int solution(int n, int a, int b)
{
int answer = 0;
while (a!= b){
a = (a+1)/2;
b = (b+1)/2;
answer++;
}
return answer;
}
}
728x90
반응형