[프로그래머스 Lv2] 점프와 순간이동 (파이썬)

Jewon Joel Park·2022년 7월 28일
0

Programmers-solution

목록 보기
30/34

문제 링크


문제 설명

점프한 칸 수만큼 배터리가 소모되고, 현재 이동한 거리 만큼 순간이동 할 경우 배터리가 소모되지 않을 때, n칸 이동하는 최소 배터리 소모량을 반환하는 함수 작성


제한 사항

  • 숫자 N: 1 이상 10억 이하의 자연수
  • 앞으로 점프한 칸 수: 1 이상의 자연수

풀이 코드

def solution(n):
    ans = 0
    while n > 0:
        if n % 2 != 0:
            ans += 1
            n -= 1
        else:
            n //= 2
    return ans

코드 설명

  1. 현재 이동한 거리 만큼 순간이동할 경우 배터리가 소모되지 않는다는 점과 제한사항이 10억이하의 자연수가 주어진다는 점에 착안하여 수학적으로 접근
  2. 배터리 소모량을 저장할 ans변수 선언 및 초기화
  3. while Loop을 사용하여 전체 거리 n이 0 이상일 때 반복하도록 설정
  4. 거리가 2로 나누어질 경우 배터리 소모량 ans는 추가되지 않고 거리만 2로 나누어 업데이트
  5. 거리가 2로 나누어 떨어지지 않을 경우 배터리 거리를 1 빼고 배터리 소모량도 마찬가지로 1 증가
  6. n이 0이 되었을 때의 배터리 소모량 반환
profile
10년을 돌고 돌아 마침내 제자리를 찾은 문과 출신 Python 개발자의 인생기록장

0개의 댓글