개발공부/문제풀이
백준(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
반응형