처음엔 n을 반으로 나누고 그 n을 기준으로 양쪽에 a,b가 있으면 그때부터 num을 반으로 나누면서 count를 세고 1이 되면 count를 반환했다.
시간이 오래 걸리거나 틀렸다.
실패 - 런타임 에러...
#주어진 길이 n을 2로 나누면서 n이 a,b사이에 있을 때 계산하기.
def solution(n,a,b):
count=0
while True:
if a<=n and b>n:
num=n
while True:
count+=1
if num==1:
return count
else:
num//=2
else:
n //= 2
print(solution(8,4,7))
print(solution(8,3,7))
print(solution(16,1,14))
단순히 a,b를 노가다로 나누다가 a,b가 같아지면 결국 만난 거니까 그때까지의 count를 반환한다.
성공
def solution(n,a,b):
count=0
while a!=b:
if a%2==0:
a//=2
else:
a//=2
a+=1
if b%2==0:
b//=2
else:
b//=2
b+=1
count+=1
return count
print(solution(8,4,7))
print(solution(8,3,7))
print(solution(16,1,14))
'알고리즘 문제' 카테고리의 다른 글
프로그래머스 조이스틱 (0) | 2018.10.11 |
---|---|
프로그래머스 큰 수 만들기 (3) | 2018.10.06 |
프로그래머스 소수 만들기 (0) | 2018.10.06 |
프로그래머스 항상 정답 (1) | 2018.10.06 |
프로그래머스 폰켓몬 (0) | 2018.10.05 |