728x90
https://www.acmicpc.net/problem/10825
10825번: 국영수
첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 1
www.acmicpc.net
문제
도현이네 반 학생 N명의 이름과 국어, 영어, 수학 점수가 주어진다. 이때, 다음과 같은 조건으로 학생의 성적을 정렬하는 프로그램을 작성하시오.
- 국어 점수가 감소하는 순서로
- 국어 점수가 같으면 영어 점수가 증가하는 순서로
- 국어 점수와 영어 점수가 같으면 수학 점수가 감소하는 순서로
- 모든 점수가 같으면 이름이 사전 순으로 증가하는 순서로 (단, 아스키 코드에서 대문자는 소문자보다 작으므로 사전순으로 앞에 온다.)
✔ 풀이
import sys
n=int(sys.stdin.readline())
data=[list(sys.stdin.readline().split()) for _ in range(n)]
data=sorted(data,key=lambda x:(-int(x[1]),int(x[2]),-int(x[3]),x[0]))
for i in data:
print(i[0])
lambda를 이용해서 우선 순위대로 정렬하면 된다.
728x90
반응형
'알고리즘' 카테고리의 다른 글
[BOJ/Python3(파이썬)] 백준 16935번: 배열 돌리기 3 (0) | 2022.05.12 |
---|---|
[BOJ/Python3(파이썬)] 백준 2745번: 진법 변환 (0) | 2022.01.17 |
[문자열] 백준 10808번: 알파벳 개수(BOJ, Python, 파이썬), ord함수 (0) | 2022.01.11 |
[DP] 백준 2579번: 계단 오르기(BOJ, Python, 파이썬) (0) | 2022.01.09 |
[DP] 백준 11054번 : 가장 긴 바이토닉 부분 수열(BOJ, Python, 파이썬) (0) | 2022.01.05 |