sort()에서는 key에 어떤 임의의 정렬 함수를 설정하여 원하는 기준에 따라 정렬할 수 있습니다.

첫째 줄에 학생수 N이 주어지고 둘째 줄부터 이름, 국영수 성적이 공백을 두고 주어집니다.
이 문제를 sort() 함수로 정렬하는 방법으로 해결하기 위해 2차원 리스트로 만들어보겠습니다.

2차원 리스트는 리스트 안에 리스트를 넣어서 만들 수 있으며 각 리스트 요소들은 ,(comma)로 구분합니다.
즉, ‘리스트 = [[a, b], [c, d], [e, f]…]’ 와 같은 형태를 가지게 됩니다.
따라서 입력을 모두 받는다면 이름, 국어, 영어, 수학 성적순으로 입력된 리스트들이
하나의 큰 전체 리스트에 저장될 것입니다.
(ex> grades = [[Junkyu, 50, 60, 100], [Sangkeun, 80, 60, 50], [Soong, 50, 60, 90]])
이때, sort() 함수에 key를 설정해주면 그 key를 기준으로 삼아 리스트의 요소들을 정렬할 수 있습니다.
key에는 원하는 정렬 함수를 설정해줄 수 있는데, 보통 lambda 함수를 많이들 사용하여 간편하게 작성합니다.
(ex> sort(key=lambda x:x[0])은 리스트의 요소들 중 인덱스 0인 요소들을 기준으로 정렬합니다.)

우리는 국어 성적을 내림차순으로, 영어 성적을 오름차순으로,
수학 성적을 내림차순으로, 이름을 사전 순으로 정렬해야합니다.
따라서 이렇게 조건 기준이 여러개일 때에는 기준들을 괄호로 묶어 설정합니다.
즉, sort(key=lambda x:(-int(x[1]), int(x[2]), -int(x[3]), x[0]))로 설정해줍니다.
이때, 앞에 ‘-‘를 붙이면 내림차순으로 정렬한다는 것을 의미합니다.
위의 조건을 해석하면 1번째 인덱스값(국어)을 기준으로 내림차순,
2번째 인덱스값(영어)을 기준으로 오름차순,
3번째 인덱스값(수학)을 기준으로 내림차순,
0번째 인덱스값(이름)을 기준으로 사전 순(아무런 언급이 없을 시 사전 순이 기본입니다.) 정렬하게 됩니다.

sort(key=lambda x:(정렬 대상)) 혹은 sorted(list, key=lambda x:(정렬 대상))
원하는 정렬을 할 수 있다는 점에 주목합시다.

문제 : 백준 10825 - 국영수