yha97 2022. 11. 8. 19:39

날짜 : 2022. . 

사용 언어 : python

 

문제

 

 

코드

import sys

n = int(sys.stdin.readline())
score = []

for i in range(n):
    name, kor, eng, math = map(str, sys.stdin.readline().split())
    score.append([name, int(kor), int(eng), int(math)])

score.sort(key = lambda x : x[0]) # 모든 점수가 같으면 이름이 사전순으로 증가
score.sort(key = lambda x : -x[3]) # 국어 점수와 영어 점수가 같으면 수학 점수가 감소하는 순서로
score.sort(key = lambda x : x[2]) # 국어 점수가 같으면 영어 점수가 증가하는 순서로
score.sort(key = lambda x : -x[1]) # 국어 점수가 감소하는 순서로

for i in score:
    print(i[0])

 

 

알게된 점

- lambda 함수를 활용함으로써 정렬에 조건을 첨가하여 문제를 해결할 수 있었다.

- 조건에 대하여 우선순위가 주어졌고 코드는 우선순위의 역순으로 진행함으로써 올바르게 순위를 정립하였다.

 

 

참고 사이트

- https://haesoo9410.tistory.com/193

 

<파이썬> 2차원 배열 정렬

1. 기본적인 리스트 정렬 * sort 정렬 - sort는 리스트에서 제공되는 기본적인 메서드이다. 주로 아래와 같이 사용한다. lst = [2, 3, 5, 6, 1, 4] lst.sort() print(lst) # [1, 2, 3, 4, 5, 6] - sort 는 기본적으로 오름

haesoo9410.tistory.com