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

문제 출처: https://programmers.co.kr/learn/courses/30/lessons/12985

문제 난이도

Lv 2


문제 접근법

2의 제곱으로 N이 주어지는 것과 무조건 a,b 숫자가 연속으로 대결을 한다는 것이 문제 푸는 포인트다. 그러므로 1,2 -> 한그룹 3,4 -> 한그룹 이걸 1,2,3으로 나뉠수 있고 이걸 또 나뉠 수 있다.


통과 코드

#include <iostream>

using namespace std;

int solution(int n, int a, int b)
{
    int answer = 1;
    while(1){
        if(a%2==0 && a-1==b) break;
        if(a%2==1&&a+1==b) break;
        a = a % 2 == 0 ? a/2 : a/2+1;
        b = b % 2 == 0 ? b/2 : b/2+1;
        answer++;
    }
    
    return answer;
}

피드백

처음에 걍 a/2 - b/2 +1 의 식을 도출해서 풀었는데 테케를 통과하지 못했다. 왜일까? 여러 테케를 시도해봤는데 다 맞아가지고 일단 일일이 나누고 들어가는 식으로 했다.

좋은 웹페이지 즐겨찾기