Spicy Tuna Sushi
본문 바로가기
문제를 풀자

[프로그래머스] 예상 대진표(C++)

by 말린malin 2022. 8. 18.

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

 

프로그래머스

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

programmers.co.kr

정말 간단하지만, 처음에는 일부 테스트케이스에서 실패했던 문제.

처음에는 두 참가자의 번호 차가 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;
}

댓글