문제 🔽
https://school.programmers.co.kr/learn/courses/30/lessons/12985
다른사람 풀이 🔽
function solution(n,a,b)
{
let answer = 0;
while(a !== b) {
a = Math.ceil(a/2);
b = Math.ceil(b/2);
answer++;
}
return answer;
}
내풀이🔽
1. 실패 ❌ => 논리 오류
function solution(n,a,b)
{
var answer = 0;
let count = Math.log(n)/Math.log(2)
let personCount = n
while(1){
if((personCount/2+0.5-a)*(personCount/2+0.5-b)<0){
answer = count;
break;
}else{
personCount=personCount/2
answer = --count;
}
}
return answer;
}
2. 성공 ⭕
function solution(n,a,b)
{
var answer = 0;
let round=1;
while(1){
if(Math.abs(a-b)===1&&Math.min(a,b)%2===1){
answer = round
break;
}
a=Math.ceil(a/2)
b=Math.ceil(b/2)
++round;
}
return answer;
}
느낀점🔽
알고리즘을 진행 할 때 count를 위에서 부터 재려고 했는데 이런 방법으로는 탐색하기가 어려워 다른 사람들의 코드를 참고했다. 일단 해당라운드에서 만날 조건을 구한뒤 아닐 시 라운드를 올리면서 counting 했다. 이렇게 진행하니 문제를 해결 할 수 있었다.
'Javascript' 카테고리의 다른 글
프로그래머스 코딩테스트 풀이(js) > 점프와 순간이동(lv2) (0) | 2023.06.25 |
---|---|
프로그래머스 코딩테스트 풀이(js) > 구명보트(lv2) (0) | 2023.06.24 |
프로그래머스 코딩테스트 풀이(js) > 카펫 (lv2) (0) | 2023.06.20 |
프로그래머스 코딩테스트 풀이(js) > 영어 끝말잇기 (lv2) (0) | 2023.06.19 |
프로그래머스 코딩테스트 풀이(js) > 짝지어 제거하기(lv2) (0) | 2023.06.18 |