문제 설명
•
명의 선수가 있고, 각 선수들의 등번호() 3종목의 순위()와 주어졌을 때, 등수가 높은 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
복사
제약 조건
•
•
(중복 없음)
•
문제 풀이
•
문제에서 주어진 조건에 따라서 key 함수를 만들어 정렬하면 된다.
◦
시간 복잡도 계산
•
◦
= (곱연산 최대 3회 + 합연산 최대 3회 + 등번호 1회) = 최대 7회 연산
◦
= 최악의 경우 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
복사