https://www.acmicpc.net/problem/1057
1057번: 토너먼트
김지민은 N명이 참가하는 스타 토너먼트에 진출했다. 토너먼트는 다음과 같이 진행된다. 일단 N명의 참가자는 번호가 1번부터 N번까지 배정받는다. 그러고 난 후에 서로 인접한 번호끼리 스타를
www.acmicpc.net
'''
1057번: 토너먼트 / silver 4 / 브루트포스
'''
# A, B 친구가 같은 라운드에서 경기하는지 확인하는 함수
def check_round(div, N, A, B):
A -= 1
B -= 1
if A // div == B // div:
return True
return False
return False
# 참가자 수 N, 친구 둘 A, B 입력받기
N, A, B = map(int, input().split())
round = 1
div = 2
while True:
if check_round(div, N, A, B) == True:
break
div *= 2
round += 1
# round 출력
print(round)
코드 리뷰
- 토너먼트 경기에서 A, B 친구가 몇라운드때 대결을 하는지 확인하는 문제입니다.
- 저는 div를 활용하여 A, B 친구가 대결을 하는지 확인했습니다.
- round 변수와 div 변수는 상관관계를 가지고 있게 설정했습니다.
EX) round = 1, 2, 3, 4, ... / div = 2, 4, 8, 16, ...
- div 는 전체 플레이어를 몇명씩 나눌것인가를 나타냅니다.
- div = 2 일때 2명씩 플레이어를 나누고, div= 4 일때 4명씩 플레이어를 나눕니다.
- 따라서 div = 2 일때, (1,2 / 3,4 / 5,6 / ...) 플레이어를 나누고 / div = 4 일때, (1,2,3,4 / 5,6,7,8 / ...) 플레이어를 나눕니다.
'백준 문제풀이' 카테고리의 다른 글
10867번: 중복 빼고 정렬하기 / silver 5 / 정렬 (0) | 2023.04.23 |
---|---|
2293번: 동전 1 / gold 5 / DP (0) | 2023.04.22 |
14890번: 경사로 / gold 3 / 구현 (1) | 2023.04.20 |
1520번: 내리막 길 / gold 3 / DP, DFS (0) | 2023.04.18 |
1946번: 신입 사원 / silver 1 / 그리디, 정렬 (0) | 2023.04.16 |