문제
작성 코드
def solution(n):
answer = 0
k = 1
while n != 0:
if n%2==0:
n //= 2
else:
answer += k
n -= 1
return answer
해설 : 0부터 괄호 안에 있는 숫자를 문제에서 주어진 규칙에 따라 더하면서, 괄호 내 숫자보다 작은 수도 규칙에 맞게 더하면서 n이 되는 나름대로의 수열?을 만들었다.
알고리즘 문제만 한 300문제 풀다보면서 느끼고 배운건 무턱대로 문제 설명과 예시만 보고 들이대지 말고,
알고리즘 과정을 내 나름대로 써보면서 규칙도 찾고 수열도 만들어봐야한다는 점..
암튼 이 문제는 첨에는 두시간 정도 엄청 헤맸는데, 아래 예시 써보자마자 5분만에 해결했다.
- n : 7일 때
0-(3) 3 6 (1) 7 // 건전지 사용량 : 4
0-(1) 1 2 (1) 3 6 (1) 7 // 건전지 사용량 : 3
- n : 8일 때
0-(2) 2-4-8 // 건전지 사용량 : 2
0-(1) 1-2-4-8 // 건전지 사용량 : 1
- n : 9일 때
0-(2) 2-4-8- (1) 9// 건전지 사용량 :3
0-(1) 1-2-4-8-(1) 9 // 건전지 사용량 : 2
- n : 11일 때
0-(2) 2-4- (1) 5-10- (1) 11//건전지 사용량 : 4
0-(1) 1-2-4-(1) 5-10-(1) 11 // 건전지 사용량 : 3