https://programmers.co.kr/learn/courses/30/lessons/12985
function solution(n,a,b){
var answer = 0;
while (a != b) {
a = Math.ceil(a / 2);
b = Math.ceil(b / 2);
answer++;
}
return answer;
}
let n = 8;
let a = 4;
let b = 7;
console.log(solution(n, a, b));
처음에 n칸의 배열을 만들어 대진해서 새로 결과를 넣고, answer을+1시키고 해서 반복을 하려했다.근데 반복하는 걸 구현하다보니까 규칙이 있을 거 같았다.
목표 a=4, b=7
[1,2,3,4,5,6,7,8] answer++ 4번째, 7번째
[2,4,6,7]answer++ 2번째, 4번째
[4,7]answer ++ 1번째, 2번째
배열에 a와b가 자기번째 index에 있고 한단계 거칠때마다 2로나눈 값의 올림 수가 그 다음 차례가 되는걸 볼 수 있다.
위 과정 후 마지막에 한번 더하면 둘다 1로 같아질테니까 a==b가 될 때까지 a/2와 b/2의 올림값을 계속 저장해주면서, answer를 증가시키니 답이 나왔다.