https://school.programmers.co.kr/learn/courses/30/lessons/12980
최소값을 구하는 문제여서 DP 로 풀어야하나 싶었다.
고민... 고민....을 해보니 짝수일때 순간이동이 가능하다는 것을 발견했다!
n 으로 가기 위해선 n/2 에서 순간 이동하는 것이 최선의 방법이다.
func solution(_ n:Int) -> Int {
var num = n
var result = 0
while num != 0 {
if num % 2 == 0 {
num /= 2
} else {
num -= 1
result += 1
}
}
return result
}
n 이 짝수 일때는 n 을 2 로 그냥 나누기만 하면 되고
만약 홀수라면 n 에 1 을 빼서 짝수로 만들고 배터리 사용량을 1 증가시키면 됩니다.
즉, 순간이동을 최대한 많이 사용하는 방식이 배터리 사용을 줄일 수 있는 문제였습니다!