반응형
programmers.co.kr/learn/courses/30/lessons/12985#
코딩테스트 연습 - 예상 대진표
△△ 게임대회가 개최되었습니다. 이 대회는 N명이 참가하고, 토너먼트 형식으로 진행됩니다. N명의 참가자는 각각 1부터 N번을 차례대로 배정받습니다. 그리고, 1번↔2번, 3번↔4번, ... , N-1번↔N
programmers.co.kr

A < B인 A, B를 전제하면, 문제 조건에서 A와 B는 서로 만나기 전까지 반드시 승리하므로
A와 B는 대전을 거쳐갈 때마다 (자신의 위치 // 2 + 자신의 위치 % 1) 이 된다.
ex) A. B = 4, 7인 경우
1회 대전 후 A와 B의 위치는
A는 3과 대전해 승리하므로 (4 // 2 + 4 % 2) = 2번째.
B는 8과 대전해 승리하므로 (7 // 2 + 7 % 2) = 4번째.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def solution(n,a,b): | |
# a < b 이도록 변환. | |
a, b = min(a,b), max(a,b) | |
count = 1 | |
# b-a == 1 이면 a와 b가 만나는 시점. | |
# 더 큰 값인 b가 홀수면, b는 a가 아니라 b 오른쪽 사람과 겨뤄야 한다. | |
# ex) a, b = 2, 3일 경우 | |
# 1-2, 3-4 형태로 먼저 대전한 다음에야 만날 수 있음. | |
while b - a != 1 or b % 2 != 0: | |
o_a, r_a = divmod(a, 2) | |
# a가 이겼을 경우 다음 라운드에서 본인의 번호 | |
a = o_a + r_a | |
# b가 이겼을 경우 다음 라운드에서 본인의 번호 | |
o_b, r_b = divmod(b, 2) | |
b = o_b + r_b | |
count += 1 | |
return count |
반응형
'프로그래밍 > 코딩테스트 문제풀이' 카테고리의 다른 글
[Python] LeetCode 743. Network Delay Time (0) | 2020.11.05 |
---|---|
[Python] LeetCode 78. Subsets (0) | 2020.11.02 |
[Python] LeetCode 3. Longest Substring without repeating characters (0) | 2020.10.27 |
[Python] LeetCode 739. Daily Temperature (0) | 2020.10.24 |
[Python] LeetCode 234. Palindrome Linked List (0) | 2020.10.23 |