프론트엔드 개발자 중규리 입니다 ദി ᷇ᵕ ᷆ ) 자세히보기

PS/문제풀이

백준 3758 KCPC Python

중규리 2024. 1. 22. 11:15

🐸 문제 정보

 

3758번: KCPC

입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 테스트 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터의 첫 번째 줄에는

www.acmicpc.net

 

🤖 알고리즘

정렬

 

⏱️ 풀이 시간

26.48m

 

📝 풀이

직관적으로 떠오르는대로 정렬하면 금방 풀 수 있었는데 괜히 꼬아서 보다가 삽질해버렸다..

풀이방법은 아래와 같다.

  1. 점수 합계 정산을 위한 딕셔너리 / 제출 횟수를 알기 위한 리스트 / 마지막 제출 시간을 알기 위한 리스트 초기화
    • 딕셔너리의 경우, key는 팀 ID / value는 문제 당 점수 리스트
  2. 문제에서 지시한대로, 아래 순서에 따라 정렬 후 본인 팀 ID의 인덱스 + 1
    • 팀 별 점수 합계 내림차순
    • 제출 횟수 오름차순
    • 마지막 제출 시간 오름차순

 

🧑‍💻 나의 답

# pypy3

import sys
input = sys.stdin.readline

for _ in range(int(input().rstrip())):
    n, k, t, m = list(map(int, input().rstrip().split()))
    scores = {i: [0] * (k + 1) for i in range(1, n + 1)}
    cnt = [0] * (n + 1)
    order = [0] * (n + 1)
    for idx in range(m):
        i, j, s = list(map(int, input().rstrip().split()))
        scores[i][j] = max(scores[i][j], s)
        cnt[i] += 1
        order[i] = idx
    print(sorted(scores, key=lambda x:[-sum(scores[x]), cnt[x], order[x]]).index(t) + 1)

'PS > 문제풀이' 카테고리의 다른 글

백준 5972 택배 배송 Python  (1) 2024.01.22
백준 2531 회전 초밥 Python  (0) 2024.01.22
백준 1253 좋다 Python  (1) 2024.01.21
백준 20922 겹치는 건 싫어 Python  (1) 2024.01.21
백준 17484 진우의 달 여행 (Small) Python  (0) 2024.01.21