Search
Duplicate

BOJ 23246 Sport Climbing Combined

생성일
2024/07/28 04:57
태그
정렬
URL

문제 설명

nn명의 선수가 있고, 각 선수들의 등번호(bb) 3종목의 순위(p,q,rp, q, r)와 주어졌을 때, 등수가 높은 3명의 등번호를 출력하는 문제
모든 순위를 곱한 값이 작은 선수가 등수가 높다.
모든 순위를 곱한 값이 같으면, 모든 순위를 합한 값이 낮은 선수가 등수가 높다.
모든 순위를 합한 값도 같으면, 등번호가 낮은 선수가 등수가 높다.

예제 입력/출력

입력1
4 301 4 3 2 815 2 2 1 717 1 1 4 505 3 4 2
Plain Text
복사
출력1
815 717 301
Plain Text
복사

제약 조건

3n1003 ≤ n ≤ 100
1bi9991 ≤ b_i ≤ 999 (중복 없음)
1pi,qi,rin1 ≤ p_i, q_i, r_i ≤ n

문제 풀이

문제에서 주어진 조건에 따라서 key 함수를 만들어 정렬하면 된다.
O(nlogn)O(n \cdot logn)

시간 복잡도 계산

kNlog2Nk \cdot N \cdot log_2N
kk = (곱연산 최대 3회 + 합연산 최대 3회 + 등번호 1회) = 최대 7회 연산
NN = 최악의 경우 100회
최악의 경우 약 4,900회 연산 필요

풀이 코드

내 풀이
def comp(x): return (x[1] * x[2] * x[3], x[1] + x[2] + x[3], x[0]) n = int(input()) infos = [list(map(int, input().split())) for _ in range(n)] infos = sorted(infos, key=comp) for b, p, q, r in infos[:3]: print(b, end=' ')
Python
복사