반응형
문제
https://www.acmicpc.net/problem/1057
1057번: 토너먼트
김지민은 N명이 참가하는 스타 토너먼트에 진출했다. 토너먼트는 다음과 같이 진행된다. 일단 N명의 참가자는 번호가 1번부터 N번까지 배정받는다. 그러고 난 후에 서로 인접한 번호끼리 스타를
www.acmicpc.net
코드
n, a, b = map(int, input().split())
cnt = 0
while True:
cnt += 1
if (a+1) // 2 == (b+1) // 2:
print(cnt)
break
else:
a = (a+1) // 2
b = (b+1) // 2
n, a, b = map(int, input().split())
cnt = 0
while a != b:
cnt += 1
a -= a // 2
b -= b // 2
print(cnt)
설명
1번 코드의 경우 직접 풀었던 방법이다.
문제의 조건에 둘이 만나지 않으면 -1을 출력하라고 되어있는데,
토너먼트에서 계속 이길 경우 만나지 않는 경우는 없으므로 생략했다.
따라서 라운드의 진행에 따라 참가자의 번호를 조정했다.
우선 라운드가 늘어나면 cnt를 1 늘리고,
만약 a+1을 2로 나눈 몫과 b+1을 2로 나눈 몫이 같다면(계산의 편의성을 위해 1을 더해줌)
cnt를 출력하고 break 해준다.
그렇지 않은 경우에는 참가자의 번호를 조정해 주었다.
2번 풀이의 경우 검색을 통해 간결하게 바꾼 풀이다.
a와 b가 같지 않을 경우
cnt를 1 늘려주고
a와 b의 번호를 조정해 준다.
반응형
'개발 연습장 > 백준 문제풀이' 카테고리의 다른 글
[파이썬, Python] 백준 1735: 분수 합 (0) | 2023.06.13 |
---|---|
[파이썬, Python] 백준 11652: 카드 (0) | 2023.06.12 |
[파이썬, Python] 백준 1748: 수 이어 쓰기 1 (0) | 2023.06.08 |
[파이썬, Python] 백준 9613: GCD 합 (0) | 2023.06.07 |
[파이썬, Python] 백준 2960: 에라토스테네스의 체 (0) | 2023.06.05 |