아!!짜증나!!! 효율성 테스트에서 자꾸 시간 초과나서 인터넷봄.. 답지보는건 자존심 상하는데.. 휴
실패한 내 코드
def solution(n):
p = {0:0}
for i in range(1,n+1):
if i%2==0:
p[i] = min(p[i//2],p[i-1]+1)
else:
p[i] = p[i-1]+1
return p[n]
이렇게 최솟값을 다 구해줘서 구했다. 하나하나씩 다 구해줘서 느린건 알겠는데.. 재귀로 해도 더느려지고 그래서 포기했었음 ㅠ
다른사람코드
def solution(n):
answer=0
while n!=0:
if n%2==0:
n//=2
else:
n-=1
answer+=1
return answer
ㅠ 이거 보니까 진짜 짜증났다.. 왜 난 더어렵게 풀어서.. 휴... 알고보니 완전 쉬운 문제였음..
이 방식으로 푼걸 다르게 코드를 짜면 이렇게 된다.
def solution(n):
answer = 1
while n > 1:
answer += n % 2
n = n // 2
return answer
신기방기
이진법으로 푼 방법도 있다. 이게 젤 천재같음
def solution(n):
return bin(n).count('1')
3이면 11 이렇게 된다. 이건 앞으로 2칸 걸어갔다는 의미이다. 즉, 1이 앞으로한칸 0이 *2이다.
'코딩테스트 > Python' 카테고리의 다른 글
[프로그래머스] 피보나치 수 (0) | 2021.09.10 |
---|---|
[프로그래머스] 땅따먹기 (0) | 2021.09.10 |
[프로그래머스] [3차] 방금그곡 (0) | 2021.09.09 |
[프로그래머스] [3차] 압축 (0) | 2021.09.09 |
[프로그래머스] 튜플 - 작성중 (0) | 2021.09.09 |