BOJ 10825 국영수

LONGNEW·2021년 1월 27일
0

BOJ

목록 보기
113/333

https://www.acmicpc.net/problem/10825
시간 1초, 메모리 256MB
input :

  • N (1 ≤ N ≤ 100,000)
  • 이름, 국어, 영어, 수학 점수(1 <= 점수 <= 100)(이름은 알파벳 대소문자로 이루어진 문자열)

output :

  • 정렬한 후 첫째 줄부터 N개의 줄에 걸쳐 각 학생의 이름을 출력

조건 :

  • 국어 점수가 감소하는 순서로
  • 국어 점수가 같으면 영어 점수가 증가하는 순서로
  • 국어 점수와 영어 점수가 같으면 수학 점수가 감소하는 순서로
  • 모든 점수가 같으면 이름이 사전 순으로 증가하는 순서로 (단, 아스키 코드에서 대문자는 소문자보다 작으므로 사전순으로 앞에 온다.)

국어는 감소하는 순서 -> 내림차순 정렬.
영어 점수 증가하는 순서 -> 오름차순 정렬
수학 점수 감소하는 순서 -> 내림차순 정렬
이름은 사전식 -> 오름차순 정렬

import sys

n = int(sys.stdin.readline())
data = [[] for i in range(n)]

for i in range(n):
    temp = sys.stdin.readline().split()
    data[i].append(temp[0])
    
    for j in range(1, len(temp)):
        data[i].append(int(temp[j]))
        
data.sort(key=lambda x:(-x[1], x[2], -x[3], x[0]))

for item in data:
    print(item[0])

0개의 댓글