728x90
[백준알고리즘] 10825번: 국영수 -Python
https://www.acmicpc.net/problem/10825
간단한 정렬문제이다. 요즘 정렬 문제들을 푸는데 파이썬으로는 너무 간단하게 풀려서.... 몇 가지 문제를 제외하고는 안 올릴 예정이고 대신 Sorting Algorithm을 복습할 겸 공부해서 올려야겠다.
이 문제도 마찬가지로 리스트의 sort()를 사용하면 간단하게 해결이 가능하다. 여기서, 정렬 기준이 순서대로 다음과 같이 주어졌다.
1. 국어 점수 내림차순
2. 영어 점수 오름차순
3. 수학 점수 내림차순
4. 영어 이름 오름차순
그리고 여기서 4번째 영어 이름 오름차순에서 말하는 아스키 코드대로 대문자가 더 작게 표시하라는 ABCD...XYZabcd...xyz 순서대로 출력을 하라는 말이다. 실제로 아스키코드에서 대문자 알파벳 A~Z는 65~91에 해당하고 소문자 a~z는 97~122에 해당한다.
하지만 파이썬에서는 그런거 없이 sort에서 다 처리해서 나온다. 여기서 입력 요소가 리스트이며 정렬 기준을 key로 설정하기 위해서 lambda를 사용했다. 이 lambda에 입력을 해줄때 리스트를 사용하면 원하는 순서대로 여러 개의 키를 동시에 적용시킬 수 있다. 내림차순을 위해서는 -를 앞에 붙여줌으로써 해결할 수 있다.
import sys
N = int(sys.stdin.readline())
table = [list(sys.stdin.readline().split()) for _ in range(N)]
table.sort(key = lambda x: (-int(x[1]), int(x[2]), -int(x[3]), x[0]))
for student in table:
sys.stdout.write(str(student[0]) + "\n")
잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다
728x90
'algorithm > 백준알고리즘' 카테고리의 다른 글
[백준알고리즘] 10820번: 문자열 분석 -Python (0) | 2020.02.16 |
---|---|
[백준알고리즘] 11652번: 카드 -Python (0) | 2020.02.16 |
[백준알고리즘] 11650, 11651번: 좌표 정렬하기, 좌표 정렬하기 2 -Python (0) | 2020.02.13 |
[백준알고리즘] 11052번: 카드 구매하기 -Python (0) | 2020.02.13 |
[백준알고리즘] 2011번: 암호코드 -Python (0) | 2020.02.13 |