본문 바로가기

학습 노트/알고리즘 (Python)

99클럽 - 선택의 기로

 

30970번: 선택의 기로

첫 번째 줄에는 첫 번째 방법을 선택했을 때의 첫 번째로 고른 촉석루 미니어처의 품질과 가격, 두 번째로 고른 촉석루 미니어처의 품질과 가격을 공백으로 구분하여 순서대로 출력한다. 두 번

www.acmicpc.net

아이디어

정렬 문제이다.
선택 방법은 서로 영향이 없다고 되어있기 때문에 원본을 훼손하지 않는 sorted를 사용했고,
선행 정렬 조건이 중복되는 경우 후행 정렬 조건이 존재하기 때문에 lambda를 사용했다.

풀이

n = int(input())
miniatures = []
for _ in range(n):
    q, p = map(int, input().split())
    miniatures.append((q, p))
    
first = sorted(miniatures, key=lambda x: (-x[0], x[1]))
first_choice = first[:2]

second = sorted(miniatures, key=lambda x: (x[1], -x[0]))
second_choice = second[:2]

print(first_choice[0][0], first_choice[0][1], first_choice[1][0], first_choice[1][1])
print(second_choice[0][0], second_choice[0][1], second_choice[1][0], second_choice[1][1])