문제
programmers.co.kr/learn/courses/30/lessons/12980
문제 풀이
n에서 0으로 역순으로 이동한다고 생각하여 문제를 풀면
먼저 현재 위치(n)이 2로 나눠 떨어지면 n/2 로 이동 (순간이동),
2로 나눠 떨어지지 않는다면 n-1로 이동(점프) 이런식으로 n이 0에 도착할때까지 연산을 반복해주면된다.
ex ) n = 1000
1000 -> 500 -> 250 -> 125 -> 124(점프+1) -> 62 -> 31 -> 30(점프+1) -> ... -> 1
점프회수 return
코드
def solution(n):
cnt = 0
while n> 0:
# 2로 나눠 떨어지면 n/2 위치로 이동
if n%2 ==0:
n//=2
# 2로 나눠떨어지지않으면 n(-1)/2 위치로 이동
# //연산자는 몫만 구하기 때문에 // 연산자 활용
else:
n//=2
# 점프횟수 +1
cnt+=1
return cnt
'파이썬 > 프로그래머스' 카테고리의 다른 글
[python] 프로그래머스 - 파일명 정렬 (0) | 2021.01.07 |
---|---|
[python] 프로그래머스 - 입국심사 (0) | 2021.01.07 |
[python] 프로그래머스 - 비밀 지도 (0) | 2021.01.07 |
[python] 프로그래머스 - 예산 (0) | 2021.01.07 |
[python] 프로그래머스 - 위장.py (0) | 2021.01.07 |