https://school.programmers.co.kr/learn/courses/30/lessons/12980
K칸 이동하면 K만큼의 건전지 소모를, 순간 이동은 현재온 거리 * 2 만큼 이동하지만 건전지를 소모하지 않는다.
최대한 건전지를 적게 소모하려면 순간 이동을 더 많이 해야 할 것 같다.
목적지인 n을 0이 될 때까지 2로 나누고 (순간 이동), 홀수인 경우 - 1을 하여 (건전지 소모 이동) 답을 찾았다.
public class Solution {
public int solution(int n) {
int answer = 0;
int number = n;
// 역으로 n -> 0 으로 가기
while (number != 0) {
if (number % 2 != 0) { // number 가 홀수라면
number = number - 1;
answer++; // 한칸 앞으로
}
number = number / 2; // 순간이동하기
}
return answer;
}
}
'Programmers' 카테고리의 다른 글
[프로그래머스][JAVA]Lv. 2 - 예상 대진표 (0) | 2023.03.12 |
---|---|
[프로그래머스][JAVA]Lv. 2 - 영어 끝말잇기 (0) | 2023.03.06 |
[프로그래머스][JAVA]Lv. 2 - 배달 (0) | 2023.02.19 |
[프로그래머스][JAVA]Lv. 2 - 택배상자 문제 (0) | 2022.11.02 |
[프로그래머스][JAVA]Lv. 2 - 야간 전술보행 문제 (1) | 2022.11.02 |