https://www.acmicpc.net/problem/10825
리스트의 sort()를 사용하면 간단하게 해결이 가능하다. 여기서, 정렬 기준이 순서대로 다음과 같이 주어졌다.
국어 점수 내림차순
영어 점수 오름차순
수학 점수 내림차순
영어 이름 오름차순
그리고 여기서 4번째 영어 이름 오름차순에서 말하는 아스키 코드대로 대문자가 더 작게 표시하라는 ABCD...XYZabcd...xyz 순서대로 출력을 하라는 말이다.
실제로 아스키코드에서 대문자 알파벳 A~Z는 65~91에 해당하고 소문자 a~z는 97~122에 해당한다.
하지만 파이썬에서는 그런거 없이 sort에서 다 처리해서 나온다.
입력 요소가 리스트이며 정렬 기준을 key로 설정하기 위해서 lambda를 사용했다.
이 lambda에 입력을 해줄때 리스트를 사용하면 원하는 순서대로 여러 개의 키를 동시에 적용시킬 수 있다.
내림차순을 위해서는 -를 앞에 붙여줌으로써 해결할 수 있다.
-int(x[0]) : 내림차순으로 출력
n = int(input())
array = []
for i in range(n):
input_data = input().split()
array.append((input_data[0],int(input_data[1]),int(input_data[2]),int(input_data[3])))
array.sort(key=lambda x:(-int(x[1]), int(x[2]), -int(x[3]), x[0]))
for i in array:
print(str(i[0]) + ' ')
그리고 출력할 땐 앞에 str() 으로 감싸줘야 한다.