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

조히·2022년 12월 27일
0

PS

목록 보기
21/82

문제 링크

예상 대진표

풀이

  1. 먼저 ab를 정렬한다.
  2. 라운드를 넘어갈 때 2로 나누어주면 자신의 번호를 구할 수 있다.
    2-1. 나누어 떨어지지 않는다면 그 다음 번호를 배정받기 때문에 +1 해준다.
  3. 이제 이거를 ab가 만날 때 까지 해주면서 answer++를 한다.
    3-1. 만나는 것의 판정은 a+1==b가 될 때, 그래서 1번 과정을 해주었다.
    3-2. 그리고 a가 홀수 일 때. a가 짝수여서 a=2, b=3 이러면 그 라운드에서 ab는 만날 수 없다.

코드

#include <iostream>

using namespace std;

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

    if(a>b) 
    {
        int tmp;
        tmp = a;
        a = b;
        b = tmp;
    }
    
    while(a+1!=b || a%2!=1)
    {
        if(a%2==1) a = a/2+1;
        else a = a/2;
        
        if(b%2==1) b= b/2+1;
        else b = b/2;
        
        answer++;
    }
    
    return answer;
}
profile
Juhee Kim | Game Client Developer

0개의 댓글