https://www.acmicpc.net/problem/9017
모든 선수들의 등수가 주어질 때, 우승팀을 구하는 프로그램
주의 사항)
각 팀의 참가 선수가 여섯보다 작으면 그 팀은 점수 계산에서 제외됨
여섯 명 보다 많은 선수가 참가하는 팀은 없음
적어도 한 팀은 참가 선수가 여섯
모든 선수는 끝까지 완주를 한다고 가정
t = int(input())
for _ in range(t):
num = int(input())
count = {}
team = list(map(int, input().split()))
for i in range(num):
if team[i] in count:
count[team[i]] += 1
else:
count[team[i]] = 1
dele = {}
for k, v in count.items():
if v < 6:
dele[k] = 1
rank = 1
score = {}
for i in range(num):
if team[i] not in dele:
if team[i] in score:
if score[team[i]][0] < 4:
score[team[i]][0] += 1
score[team[i]][1] += rank
elif score[team[i]][0] == 4:
score[team[i]][0] += 1
score[team[i]][2] = rank
else:
score[team[i]] = [1, rank, 0]
rank += 1
ans = sorted(score.items(), key=lambda x:(x[1][1], x[1][2]))
print(ans[0][0])
복잡해서 혼자 힘으로 푸는데 시행착오를 겪어 블로그를 참고하고 풀었다
이런 건 이제 혼자 짧은 시간 내에 풀고 싶다..