https://www.acmicpc.net/problem/9017
9017번: 크로스 컨트리
입력 데이터는 표준입력을 사용한다. 입력은 T 개의 테스트 케이스로 주어진다. 입력 파일의 첫 번째 줄에 테스트 케이스의 수를 나타내는 정수 T 가 주어진다. 두 번째 줄부터는 두 줄에 하나의
www.acmicpc.net
T = int(input())
for _ in range(T):
n = int(input())
cnt = {}
arr = list(map(int, input().split()))
# 팀 별로 주자 수 세기
for i in range(n):
if arr[i] in cnt:
cnt[arr[i]] += 1
else:
cnt[arr[i]] = 1
# 제외되는 팀 구하기
dele = {} # 제외되는 팀
for k, v in cnt.items():
if v < 6:
dele[k] = 1
# 점수 계산
team = {}
idx = 1 # 점수
for i in range(n):
if arr[i] not in dele: # 제외되지 않는 팀이라면?
if arr[i] in team: # 팀의 첫번째 주자가 아니라면
if team[arr[i]][0] < 4: # 상위 4명 안에 들었다면
team[arr[i]][0] += 1 # 팀당 주자 수 누적합
team[arr[i]][1] += idx # 점수 추가
elif team[arr[i]][0] == 4: # 5번째 주자라면
team[arr[i]][0] += 1 # 팀탕 주자 수 누적합
team[arr[i]][2] = idx # 5번째 주자 점수만 따로 저장
else: # 팀내 첫번째 주자라면
team[arr[i]] = [1, idx, 0] # [팀당 주자 수, 상위 4명 점수 합, 5번째 주자의 점수]
idx += 1
# 순위 정렬
team = sorted(team.items(), key=lambda x: (x[1][1], x[1][2]))
print(team[0][0])
블로그 참고...
'백준' 카테고리의 다른 글
백준 11098. 첼시를 도와줘! (0) | 2024.04.05 |
---|---|
백준 2869. 달팽이는 올라가고 싶다 (0) | 2024.04.05 |
백준 20125. 쿠키의 신체 측정 (0) | 2024.03.30 |
백준 2163. 초콜릿 자르기 (0) | 2024.03.29 |
백준 7567. 그릇 (0) | 2024.03.29 |