문제 설명 및 제한사항
아이디어 및 해결 방법
코드
def solution(n):
# N이 10억 정도로 클 수 있습니다.
# O(log n), O(1) 정도에 해결하는 방법이 있다는 뜻입니다.
ans = 1
# 우선 n이 2로 나누어진다면, 나눌 수 있는 만큼 나눠봅니다.
while n > 1:
while n % 2 == 0:
n /= 2
# 예외처리: n이 1이면 그냥 끝냅니다.
if n == 1:
break
# 2로 안 나누어떨어지면 1을 빼서 2로 나누어떨어지게 합니다
n -= 1
ans += 1
return ans
Python
복사
출처
프로그래머스 코딩테스트 연습 https://school.programmers.co.kr/learn/challenges