알고리즘

[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()