개발공부/문제풀이

백준(10825) : 국영수 파이썬(python)

tigre 2022. 2. 18. 00:00
728x90
반응형

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

 

10825번: 국영수

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

www.acmicpc.net

순차적으로 정렬을 해줘야 풀 수 있는 문제이다.

파이썬의 sort 함수와 lambda를 이용하여 문제를 쉽게 풀 수 있었다.

 

파이썬 람다에 대해서는 이글에 설명해놓았다.

https://tigre911.tistory.com/66

 

나의 코드

import sys
input = sys.stdin.readline

n = int(input())

s_list = []

for _ in range(n):
    s_list.append(input().split())

# print(s_list)
s_list.sort(key= lambda x : (-int(x[1]), int(x[2]), -int(x[3]), x[0]))
# 국어 점수가 감소하는 순서로 (내림차순)
# 국어 점수가 같으면 영어 점수가 증가하는 순서로 (오름차순)
# 국어 점수와 영어 점수가 같으면 수학 점수가 감소하는 순서로 (내림차순)
# 모든 점수가 같으면 이름이 사전 순으로 증가하는 순서로 (단, 아스키 코드에서 대문자는 소문자보다 작으므로 사전순으로 앞에 온다.)(오름차순)

# print(s_list)

for i in  s_list:
    print(i[0])
728x90
반응형