https://programmers.co.kr/learn/courses/30/lessons/12985#
function solution(n,a,b)
{
let cnt=0;
while(a!==b){
a=Math.ceil(a/2);
b=Math.ceil(b/2);
cnt++;
}
return cnt;
}
문제는 꽤 빨리 파악했는데, while의 조건을 잘못작성해서 헤맸던 문제였다. 아래코드는 실패코드이다.
function solution(n,a,b)
{
let cnt=1;
while(a!==1 && b!==1){
a=Math.ceil(a/2);
b=Math.ceil(b/2);
cnt++;
}
return cnt;
}
초반에는 이렇게 작성했는데, 코드실행했을때만 정답뜨고 테케에서 다수가 실패로 뜬다. 단순히 나와있는 테케에서만 성공이고 나머지는 실패...
반례는 16 1 5 와같은 케이스를 생각해보면 쉬웠다. 내가 짠 코드는 하나라도 1이면 1을 return하기때문에 당연 틀렸던 것이다. 반례참고
프로그래머스에서 나머지 테케는 비공개하는데, 좀 알려주면 좋겠다🤔 뭐 이것도 예외처리 똑바로 하라는 훈련이겠지