알고리즘
[BOJ] 2262 - 토너먼트 만들기 (Python)
흙금
2023. 4. 21. 13:49
아이디어
가장 낮은 랭킹의 선수부터 차례로 양 옆 선수 중 랭킹 차이가 더 적은 선수와 시합하며 그 차이를 더해 나간다.
풀이
def solution():
n = int(input())
ranking = list(map(int, input().split()))
res = 0
for r in range(n, 1, -1):
idx = ranking.index(r)
d = r
if idx-1 >= 0 and r-ranking[idx-1] < d:
d = r-ranking[idx-1]
if idx+1 < r and r-ranking[idx+1] < d:
d = r-ranking[idx+1]
res += d
del ranking[idx]
print(res)
solution()