문제
https://www.acmicpc.net/problem/9017
풀이
낚시 없는 정직한 구현문제다.
6명 이상 출전하지 않은 팀은 아예 없는셈 쳐야 하는것에 주의 하면 된다.
6명이 출전하지 않은 팀을 set으로 저장해두고
팀명을 key, 팀원의 순위를 List로 담을 defaultdict(list)를 선언하고 6명 이상인 팀의 순위를 6명 이하로 출전한 팀을 제외하는것을 고려하며 담아준다.
딕셔너리를 순회하며 리스트의 0~3번 인덱스의 값의 합, 4번 인덱스의 값, 팀명을 담은 리스트를 만들고 .sort()로 오름차순 정렬한뒤, 정렬된 첫번째 원소의 팀명(2번 인덱스)을 출력하면 끝.
정답 코드
from collections import defaultdict
T = int(input())
for _ in range(T):
N = int(input())
teamNo = list(map(int, input().split()))
exceptTeam = set()
for i in set(teamNo):
if teamNo.count(i) < 6:
exceptTeam.add(i)
rankDict = defaultdict(list)
exceptedCount = 0
for rank, team in enumerate(teamNo):
if team in exceptTeam:
exceptedCount += 1
continue
rankDict[team].append(rank+1-exceptedCount)
resultSum = []
for team in rankDict.keys():
if len(rankDict[team]) < 6:
continue
resultSum.append([sum(rankDict[team][0:4]), rankDict[team][4], team])
resultSum.sort()
print(resultSum[0][2])
'알고리즘 > 백준' 카테고리의 다른 글
[백준/Python] 11279번. 최대 힙 (0) | 2024.11.15 |
---|---|
[백준/Python] 1927번. 최소 힙 (0) | 2024.11.15 |
[백준/Python] 2167번. 2차원 배열의 합 (0) | 2024.11.15 |
[백준/Python] 11047번. 동전 0 (0) | 2024.11.15 |
[백준/Kotlin] 28702번. FizzBuzz (0) | 2024.10.22 |