간단한 문제였지만 파이썬에서 람다를 활용하여 정렬하는 법을 알 수 있었다.
리스트에 들어오는 원소는 (Junkyu, 50, 60, 100)이다.
맨 앞에 문자가 있으므로 뒤에 숫자들도 문자로 인식된다.
그렇기 때문에 람다식에서 숫자들을 int로 형변환 해줘야 한다.
정렬순서는 문제에 나와있는 것과 동일하게 하면된다.
- 국어 점수가 감소하는 순서로
- 국어 점수가 같으면 영어 점수가 증가하는 순서로
- 국어 점수와 영어 점수가 같으면 수학 점수가 감소하는 순서로
- 모든 점수가 같으면 이름이 사전 순으로 증가하는 순서로 (단, 아스키 코드에서 대문자는 소문자보다 작으므로 사전순으로 앞에 온다.)
람다식의 기본적인 정렬기준은 오름차순인데, 국어점수는 감소하는 순서로 정렬을 해야하므로 앞에 - 를 붙여준다
소스코드
import sys
#sys.stdin = open("input.txt", "r")
n = int(input())
student = [list(map(str, input().split())) for _ in range(n)]
student.sort(key = lambda x : (-int(x[1]), int(x[2]), -int(x[3]), x[0]))
for name in student:
print(''.join(name[0]))
'Problem Solving > 백준' 카테고리의 다른 글
[BOJ 백준] 13913번 : 숨바꼭질4 (Python, 파이썬) (0) | 2021.01.13 |
---|---|
[BOJ 백준] 9019번 : DSLR (Python, 파이썬) (0) | 2021.01.11 |
[BOJ 백준] 2580번 : 스도쿠(Python, 파이썬) (1) | 2021.01.09 |
[BOJ 백준] 2638번 : 치즈 - 파이썬, Python (4) | 2021.01.08 |
[BOJ 백준] 9205번 : 맥주 마시면서 걸어가기 - 파이썬, Python (0) | 2021.01.07 |