본문 바로가기

백준 문제풀이

10825번: 국영수 / silver 4 / 정렬

https://www.acmicpc.net/problem/10825

 

10825번: 국영수

첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 1

www.acmicpc.net

'''
10825번: 국영수 / silver 4 / 정렬
'''
import sys

input = sys.stdin.readline

n = int(input())
arr = []
for i in range(n):
    arr.append(list(map(str, input().split())))
arr.sort(key=lambda x: str(x[0]))
arr.sort(key=lambda x: int(x[3]), reverse=True)
arr.sort(key=lambda x: int(x[2]))
arr.sort(key=lambda x: int(x[1]), reverse=True)

for i in arr:
    print(i[0])

 

여러 값들을 중복?해서 정렬하는 방법 아는 것이 핵심!

 

- sort() 와 lambda 사용

 

1. 이름을 먼저 오름차순으로 정렬

2. 수학을 내림차순으로 정렬

3. 영어를 오름차순으로 정렬

4. 국어를 내림차순으로 정렬

=> 조건에 맞게 정렬이 완료 됨