Algorithm
[프로그래머스(파이썬/Python)] 점프와 순간 이동
kindof
2021. 8. 4. 20:15
https://programmers.co.kr/learn/courses/30/lessons/12980
코딩테스트 연습 - 점프와 순간 이동
OO 연구소는 한 번에 K 칸을 앞으로 점프하거나, (현재까지 온 거리) x 2 에 해당하는 위치로 순간이동을 할 수 있는 특수한 기능을 가진 아이언 슈트를 개발하여 판매하고 있습니다. 이 아이언 슈
programmers.co.kr
Greedy하게 접근하면 쉽게 풀 수 있는 문제입니다.
아래 풀이의 주석에서 설명한 것처럼 (짝수번 째 칸 * 2)한 지점까지의 에너지 소모량은 0이고, 홀수 칸에서 짝수칸을 가기 위해서는 +1을 점프해주면 되기 때문에 이를 역으로 구현해주었습니다.
ps. 처음에는 DP라고 생각해서 풀었는데, 정답은 맞지만 n이 1억 이하의 범위라서 DP 배열의 메모리 초과로 인한 런타임 에러가 납니다!
def solution(n):
answer = 0
# Greedy -> n부터 시작해서 짝수는 무조건 그 절반에서 순간이동
# 홀수일때는 그 전 칸이 짝수칸 이므로 +1만 점프
while n >= 1:
if n % 2 == 0:
n //= 2
else:
answer += 1
n -= 1
return answer