7042 : 성적 다중 정렬 (lambda)
•시간제한: 1.000 S
•메모리제한: 256 MB
•제출: 1
•통과: 1
•만든사람: suakii
문제 설명
N명의 학생 이름과 국어, 영어, 수학 성적이 주어집니다. 다음 조건에 따라 학생들을 정렬하여 이름을 출력하는 프로그램을 작성하십시오.
[정렬 기준]
1. 세 과목의 점수 합계(총점)가 높은 학생이 먼저 나옵니다. (총점 내림차순)
2. 만약 총점이 같다면, 국어 점수가 높은 학생이 먼저 나옵니다. (국어 점수 내림차순)
3. 만약 국어 점수도 같다면, 학생의 이름이 사전 순으로 빠른 학생이 먼저 나옵니다. (이름 오름차순, 알파벳/한글 사전순)
[제약 조건]
• 학생 수 $N$: $1 \le N \le 200$
• 각 점수: $0 \le \text{점수} \le 100$ (정수)
[정렬 기준]
1. 세 과목의 점수 합계(총점)가 높은 학생이 먼저 나옵니다. (총점 내림차순)
2. 만약 총점이 같다면, 국어 점수가 높은 학생이 먼저 나옵니다. (국어 점수 내림차순)
3. 만약 국어 점수도 같다면, 학생의 이름이 사전 순으로 빠른 학생이 먼저 나옵니다. (이름 오름차순, 알파벳/한글 사전순)
[제약 조건]
• 학생 수 $N$: $1 \le N \le 200$
• 각 점수: $0 \le \text{점수} \le 100$ (정수)
입력 설명
첫째 줄에 학생 수 N이 주어집니다. (1 ≤ N ≤ 200)
둘째 줄부터 N개의 줄에 걸쳐 각 학생의 이름과 국어, 영어, 수학 점수가 공백으로 구분되어 주어집니다.
이름은 알파벳 대소문자 또는 한글로 구성된 1자 이상 10자 이하의 문자열이며, 점수는 0 이상 100 이하의 정수입니다.
둘째 줄부터 N개의 줄에 걸쳐 각 학생의 이름과 국어, 영어, 수학 점수가 공백으로 구분되어 주어집니다.
이름은 알파벳 대소문자 또는 한글로 구성된 1자 이상 10자 이하의 문자열이며, 점수는 0 이상 100 이하의 정수입니다.
출력 설명
정렬된 순서대로 학생의 이름을 한 줄에 하나씩 출력합니다.
입력 예시
COPY
복사되었습니다!
복사되었습니다!
4
Hong 80 90 100
Kim 90 90 90
Lee 100 80 90
Park 80 90 100
출력 예시
COPY
복사되었습니다!
복사되었습니다!
Lee
Kim
Hong
Park
도움
파이썬의
sorted() 함수나 리스트의 .sort() 메소드에서 key=lambda x: (-x[1], -x[2], x[0]) 와 같이 다중 조건 튜플을 지정하면 간결하게 다중 정렬을 수행할 수 있습니다.