function solution(n, a, b) {
let minNum = Math.min(a, b);
let maxNum = Math.max(a, b);
var answer = 0;
while (true) {
answer++;
minNum = Math.ceil(minNum / 2);
maxNum = Math.ceil(maxNum / 2);
if (minNum % 2 !== 0 && maxNum % 2 === 0 && maxNum - minNum === 1) {
break;
}
}
return answer + 1;
}
작은 숫자가 홀수이고, 큰 숫자가 짝수이며, 두 수의 차가 1일때 서로 만나게 되는 규칙을 발견했었다.
(2 와 3은 대결을 하지 않지만, 1과 2, 3과 4는 서로 대결한다)
하지만 3개의 테스트케이스에서 시간초과가 나왔다.
function solution(n, a, b) {
let answer = 0;
while (a !== b) {
a = Math.ceil(a / 2);
b = Math.ceil(b / 2);
answer++;
}
return answer;
}
그냥 아예 서로 값이 같아진다면 answer +1 이 아닌 answer를 리턴해주면 되고, 같아진다는 의미 자체가 서로 만난다는 의미이다.