https://school.programmers.co.kr/learn/courses/30/lessons/12985
정말 간단하지만, 처음에는 일부 테스트케이스에서 실패했던 문제.
처음에는 두 참가자의 번호 차가 1이면 반복문을 빠져나오도록 했다.
그러나 간단히 (4,2,3) 같은 경우만 보더라도
(1,2) (3,4) 경기후 (2,3)이 만나야 하지만,
처음부터 차가 1이므로 한 번 만에 빠져나온다.
그러므로 둘이 만났을 때도 서로 이겼다 가정하여 번호가 같을 때까지 반복문을 돌린다.
using namespace std;
int solution(int n, int a, int b)
{
int answer = 0;
while(1)
{
if(a==b)
break;
answer++;
a=(a+1)/2;
b=(b+1)/2;
}
return answer;
}
'문제를 풀자' 카테고리의 다른 글
[프로그래머스] 영어 끝말잇기(C++) (0) | 2022.08.19 |
---|---|
[프로그래머스] 두 큐 합 같게 만들기(C++) (0) | 2022.08.19 |
[프로그래머스] 수식 최대화(C++) (0) | 2022.08.18 |
[프로그래머스] 피로도(C++) (0) | 2022.08.17 |
[프로그래머스] 다음 큰 숫자(C++) (0) | 2022.08.17 |
댓글