정렬 알고리즘
Q
10825번: 국영수
첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 1
www.acmicpc.net
A
입력을 문자열로 받았고, key = lambda x : (-x[1], x[2], -x[3], x[0]) 를 하기 위해서 국어점수, 영어점수, 수학점수를 int로 정수형으로 변환시켰다.
입력이 10만 이상이라면 input보다 sys쓰는 습관을 들이자! 시간 10배정도 차이난다.
코드
import sys
n = int(sys.stdin.readline().rstrip())
array = [0] * n
for i in range(n):
array[i] = list(sys.stdin.readline().rstrip().split())
array[i][1] = int(array[i][1])
array[i][2] = int(array[i][2])
array[i][3] = int(array[i][3])
answer = sorted(array, key = lambda x : (-x[1], x[2], -x[3], x[0]))
for i in range(n):
print(answer[i][0])