알고리즘 공부/백준

(Python)백준 코딩테스트 연습 - 국영수(10825)

HRuler 2023. 1. 16. 19:55

1. 문제

https://www.acmicpc.net/problem/10825

 

10825번: 국영수

첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 1

www.acmicpc.net

2. 풀이

import sys
input = sys.stdin.readline

# n : 학생 수
n = int(input())

# n_l : 학생 이름과 점수를 저장할 리스트
n_l = []

for i in range(n):
    name, kor, eng, math = map(str, input().split())
    n_l.append((name, int(kor), int(eng), int(math)))

sort_n_l = sorted(n_l, key = lambda x : (-x[1], x[2], -x[3], x[0]))

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

3. 후기

 - 문제에서 입력받은 이름, 국어, 영어, 수학을 set로 리스트에 저장하여 lambda 식으로 여러 조건 정렬을 진행한 후 이름을 순서대로 출력하였습니다.