-
Notifications
You must be signed in to change notification settings - Fork 0
Closed
Description
💬 문제
[코딩테스트 연습 - 점프와 순간 이동](https://school.programmers.co.kr/learn/courses/30/lessons/12980)
💬 Idea
- K 칸을 앞으로 점프할 때만 건전지 사용량이 K만큼 든다.
- (현재까지 온 거리) x 2로 순간이동 할 수 있는 부분을 최대한 활용하여야 최소의 건전지 사용량을 도출할 수 있다.
- 따라서 n의 값이 0이 될 때까지 반복문을 돌리면서
- n이 2로 나누어질 수 있다면 순간이동을 시키고,
- n이 2로 나누어질 수 없다면 (홀수라면) n의 값에서 1을 뺀 후 건전지 사용량에 1을 더해주며 최소의 건전지 사용량을 도출한다.
💬 풀이
func solution(_ n:Int) -> Int {
var n = n
var ans: Int = 0
while n != 0 {
if n % 2 == 0 {
n = n / 2
} else {
n = n - 1
ans += 1
}
}
return ans
}