[알고리즘C++]예상 대진표

후이재·2020년 9월 12일
1

오늘의 문제

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

예상 대진표

나의 풀이

#include <iostream>

using namespace std;

int solution(int n, int a, int b)
{
    int answer = 1;
    int mini = min(a, b);
    int maxi = max(a, b);
    while(mini%2 == 0 || maxi - mini != 1){
        if(mini % 2 == 0) mini /= 2;
        else mini = mini/2 + 1;
        if(maxi % 2 == 0) maxi /= 2;
        else maxi = maxi/2 + 1;
        answer ++;
    }
    return answer;
}

모범 답안

#include <iostream>

using namespace std;

int solution(int n, int a, int b)
{
    a--;
    b--;
    int answer=0;
    while(a!=b){
        a=a/2;
        b=b/2;
        answer++;
    }
    return answer;
}

배울 점

  • 와 같아질 때까지 나누는 거였다.
  • 나는 ㄹㅇ 나오는 숫자만 생각했는데 2로 각각 나누다보면 같아질 때가 있다. 규칙성을 잘 따져보자
profile
공부를 위한 벨로그

0개의 댓글