백준 10825 - 국영수 (Python)

2024. 2. 12. 06:41알고리즘

문제

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

 

10825번: 국영수

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

www.acmicpc.net

풀이

a = []
for _ in range(int(input())):
    name, s1,s2,s3 = input().split()
    a.append([name,int(s1),int(s2),int(s3)])

a.sort(key=lambda x: (-x[1],x[2],-x[3],x[0]))
for i in a:
    print(i[0])

각 학생의 이름과 성적들을 입력받아서 성적은 int로 바꾼 뒤 리스트를 구성하여 a에 저장해둔다.

만들어진 2차원 리스트 a를 문제에 주어진 아래 우선순위로 정렬한 후 출력하였다.

1) 국어점수 내림차순

2) 영어점수 오름차순

3) 수학점수 내림차순

4) 이름 사전순

 

정렬 조건은 sort함수의 key에 람다함수로 지정해주었다.

내림차순으로 정렬해야 하는 항목에는 -를 붙혀 음수로 만들어주어었다.