문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/12980
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
아이언 슈트는 한 번에 K 칸을 앞으로 점프하거나, (현재까지 온 거리) x 2 에 해당하는 위치로 순간이동을 할 수 있다.
아이언 슈트는 건전지로 작동하는데, 순간이동을 하면 건전지 사용량이 줄지 않지만,
앞으로 K 칸을 점프하면 K 만큼의 건전지 사용량이 든다. 건전지 사용량을 줄이기 위해 점프로 이동하는 것을 최소화 하려고 한다. 이동 거리 N이 주어졌을 때, 사용해야 하는 건전지 사용량의 최솟값을 return하는 문제이다.
제한 사항
- 숫자 N : 1 이상 10억 이하의 자연수
- 숫자 K : 1 이상의 자연수
풀이
순간이동을 최대한 많이 이용해서 건전지 사용량을 최소화해야 한다.
방식을 잘 찾아보면 N가 짝수 일 때는, N / 2 위치에서 순간이동을 하면 건전지를 사용하지 않아도 된다.
반대로 홀수 일 때, N - 1(점프)을 하여 짝수로 만든 다음, 순간이동을 할 수 있게 만들어 준다면 건전지 사용량을 최소화할 수 있다.
✅ Code - 성공
def solution(n):
ans = 1
while n > 1:
if n % 2 == 0:
n = n // 2
else:
n -= 1
ans += 1
return ans
'알고리즘 문제 > 프로그래머스_Lv2 도장깨기' 카테고리의 다른 글
[프로그래머스] 예상 대진표 (Python) (0) | 2024.01.18 |
---|---|
[프로그래머스] 영어 끝말잇기 (Python) (1) | 2024.01.17 |
[프로그래머스] 배달 (Python) (0) | 2024.01.15 |
[프로그래머스] 짝지어 제거하기 (Python) (0) | 2024.01.12 |
[프로그래머스] N개의 최소공배수 (Python) (0) | 2024.01.12 |