[프로그래머스] 예상 대진표(python)
문제 링크 - https://programmers.co.kr/learn/courses/30/lessons/12985
나의 풀이
def solution(n,a,b):
cnt = 1
while True:
if a%2!=0 and b-a == 1: # a가 더 작을 때
break
elif b%2!=0 and a-b == 1: # b가 더 작을 때
break
else:
if a % 2 == 0:
a//=2
else:
a = a//2 + 1
if b % 2 == 0:
b//=2
else:
b = b//2+1
cnt += 1
return cnt
- a와 b를 차이가 1이 될 때 까지 짝수면 2로 나누고 홀수면 2로 나눈 몫 +1
- a가 b보다 작은 수라면 아래의 과정을 거치면 홀수가 되므로 a가 홀수고 b와의 차이가 1이라면 break(b가 a보다 더 작을때도 마찬가지)
다른 사람의 풀이
def solution(n,a,b):
answer = 0
while a != b:
answer+=1
a, b = (a+1)//2, (b+1)//2
return answer
- (1,2) (3,4) (5,6) (7,8)... 이런식으로 대결을 하니까 a와 b에 1을 더해서 2로 나눠주면 홀수/짝수 나누지 않고도 풀 수 있다.
Author And Source
이 문제에 관하여([프로그래머스] 예상 대진표(python)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@js2_11/프로그래머스-예상-대진표python저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)