알고리즘/백준
[백준] 2262번 파이썬 _ 토너먼트 만들기
이숭간
2021. 7. 24. 17:09
728x90
https://www.acmicpc.net/problem/2262
문제유형 : 그리디
문제풀이 :
- 랭킹이 가장 낮은사람부터 찾은뒤, 좌우중에 랭킹차가 작은사람과 겨루게 한다.
- 랭킹이 가장 낮은사람부터 찾는이유?? :랭킹이 높은사람부터 찾고 랭킹차가 작은 사람과 겨루게하면 다음 라운드에서 만나게될 사람은 이전사람보다 더 랭킹차가 큰 사람일것이므로 그 차이가 점점더 커지게된다.
- 랭킹이 낮은사람을 찾고 겨루게한뒤에는 해당사람은 무조건 지게되있으므로 pop후에 리스트에서 없애준다.
정답코드 :
import sys
input = sys.stdin.readline
n = int(input())
input_list = list(map(int, input().split()))
sorted_list = sorted(input_list, reverse=True)
result = 0
for i in sorted_list[:-1]:
idx = input_list.index(i)
if idx==0:
result += abs(input_list[idx+1]-i)
elif idx==len(input_list)-1:
result += abs(input_list[idx-1]-i)
else:
result += min(abs(input_list[idx+1]-i),abs(input_list[idx-1]-i))
input_list.pop(idx)
print(result)