Keep going

[백준] 10825번 파이썬(python) - 국영수 본문

코딩/백준

[백준] 10825번 파이썬(python) - 국영수

Howard Schultz 2020. 8. 14. 22:32
반응형

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

 

10825번: 국영수

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

www.acmicpc.net

이 문제는 바로 직전에 풀었던, 10814번 나이순 정렬과 문제가 비슷했다. 하지만 정렬조건이 나이 하나가 아니고, 국어, 영어, 수학 점수였고, 오름차순, 내림차순으로 정렬해야하는 방식이 달라서 내가 접하지 못했던 것이었다. 구글 검색을 통해서 해당 문제에 대한 해답을 얻을 수 있었다.

count = int(input())
a = []
for i in range(count):
    [Name, Kor, Eng, Math] = input().split()
    a.append([Name, Kor, Eng, Math])
b = sorted(a, key= lambda a: (-int(a[1]), int(a[2]), -int(a[3]), a[0]))
for i in range(count):
    print(b[i][0])

이번 풀이에서 중요했던 부분은

b = sorted(a, keylambda a: (-int(a[1]), int(a[2]), -int(a[3]), a[0]))

이 부분이었다. 처음에는 sorted를 중첩하는 방식으로 했는데 의도대로 제대로 되지 않아서 조금 더 검색하다가 key = = lambda a : 에 정렬하려는 기준들을 한 번에 입력하는 방식을 알게 되었다. 이를 통해 문제를 해결하였다. 

 

반응형