프로그래머스 예상 대진표 코드 및 해설 (파이썬)
2021. 6. 1. 15:35ㆍalgorithm
반응형
https://programmers.co.kr/learn/courses/30/lessons/12985
answer에 a,b가 만나는 라운드의 번호를 저장합니다. 처음엔 1로 초기화합니다.
check_if_meet 함수를 통해 현재 라운드에서 a,b가 만나는지 확인합니다. a,b가 만나려면 둘의 차가 1이고 둘 중 더 큰 값이 짝수여야 합니다.
next_num 함수는 현재 선수의 번호를 받으면, 다음 라운드에 이 선수에게 주어질 번호를 반환합니다.
a,b가 check_if_meet에서 True를 반환할 때까지 a,b를 다음 라운드의 번호로 갱신하고 answer를 1씩 증가시킵니다.
# a,b 참가자가 현재 라운드에서 만나면 True, 아니면 False
# 둘의 차가 1이고, 큰 값이 짝수여야 만남
def check_if_meet(a,b):
if abs(a-b) == 1 and max(a,b) % 2 == 0:
return True
return False
# 다음 라운드에 배정되는 번호를 반환함
def next_num(player):
# 짝수면 현재 번호를 2로 나눈 값
if player % 2 == 0:
return player // 2
# 홀수면 (현재 번호 + 1)을 2로 나눈 값
else:
return (player+1)//2
def solution(n,a,b):
# a,b가 만나는 라운드의 번호
answer = 1
# 현재 라운드에서 만나면 while문 탈출
while not check_if_meet(a,b):
# 다음 라운드의 번호로 갱신
a = next_num(a)
b = next_num(b)
# 라운드 번호 +1
answer += 1
return answer
반응형
'algorithm' 카테고리의 다른 글
프로그래머스 이중우선순위큐 코드 및 해설 (파이썬) (0) | 2021.06.01 |
---|---|
프로그래머스 후보키 코드 및 해설 (파이썬) (0) | 2021.06.01 |
프로그래머스 크레인 인형뽑기 코드 및 해설 (파이썬) (0) | 2021.06.01 |
프로그래머스 완주하지 못한 선수 코드 및 해설 (파이썬) (0) | 2021.06.01 |
프로그래머스 디스크 컨트롤러 코드 및 해설 (파이썬) (0) | 2021.06.01 |