https://school.programmers.co.kr/learn/courses/30/lessons/12980
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
0에서 출발하여 주어진 n 값에 도달 (초과가 아닌 n에 도착) 하기 위해
+k 씩 이동하면 k만큼 배터리를 사용하게되고
순간이동하여 현재 위치 *2 인 위치로 이동하면 배터리를 사용하지 않는다.
최소의 배터리 사용량을 반환하는 함수
*2 할지 +k 할지 어떻게 결정하지?
일단 시작할때 +1 씩 하긴 해야하는데
모든 경우의 수를 따져보라는건가? 했는데 도무지 방향을 모르겠어서
질문하기 가서 컨닝을 좀 했다.
접근법은 의외로 간단했는데
n에서부터 시작하는거다. n이 짝수면 /2 , 홀수면 - 1 해서 1에 도달할때까지 반복하면 된다.
function solution(n){
let use = 1;
let cur = n;
while(cur !== 1){
if(cur % 2 === 0){
cur /= 2;
}else{
cur -= 1;
use ++;
}
}
return use;
}
복잡해보이는 문제도 뒤집어서 생각하는 연습이 필요할거같은데
참 쉽지않다 ㅠ
'개발 공부 일지 > JavaScript' 카테고리의 다른 글
[프로그래머스] 멀리뛰기 (0) | 2025.03.21 |
---|---|
[프로그래머스] 구명보트 (0) | 2025.03.21 |
[프로그래머스] 체육복 (0) | 2025.03.21 |
[프로그래머스] 짝지어 제거하기 (0) | 2025.03.21 |
[프로그래머스] 숫자의 표현 (0) | 2025.03.21 |