문제
https://school.programmers.co.kr/learn/courses/30/lessons/12985
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드
#include <iostream>
using namespace std;
int solution(int n, int a, int b)
{
int answer = 0;
while(a != b) {
a = (a + 1) / 2;
b = (b + 1) / 2;
answer++;
}
return answer;
}
풀이
결국 A의 번호와 B의 번호가 같을 때까지 2를 나누어주면 된다.
이때, A 와 B 의 번호 차가 1이면 된다고 처음 접근했는데 8, 9 와 같이 차이는 1이지만 다른 게임에 속한다는 것을 놓쳐서 같을 때까지 나누어주고 라운드의 시작인 answer 의 초기값을 0으로 하였다.