[이코테] 정렬 - 국영수
🔔 문제
도현이네 반 학생 N명의 이름과 국어, 영어, 수학 점수가 주어집니다. 이때, 다음과 같은 조건으로 학생의 성적을 정렬하는 프로그램을 작성하세요.
- 국어 점수가 감소하는 순서로
- 국어 점수가 같으면 영어 점수가 증가하는 순서로
- 국어 점수와 영어 점수가 같으면 수학 점수가 감소하는 순서로
- 모든 점수가 같으면 이름이 사전 순으로 증가하는 순서로 (단, 아스키코드에서 대문자는 소문자보다 작으므로 사전 순으로 앞에 옵니다.)
입력
- 첫째 줄에 도현이네 반의 학생 수 N (1<=N<=100,000)이 주어집니다.
- 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어집니다.
- 점수는 1보다 크거나 같고, 100보다 작거나 같은 자연수입니다.
- 이름을 알파벳 대소문자로 이루어진 문자열이고, 길이는 10자리를 넘지 않습니다.
출력
- 문제에 나와 있는 정렬 기준으로 정렬한 후 첫째 줄부터 N개의 줄에 걸쳐 각 학생의 이름을 출력합니다.
🎯 풀이방법
학생들의 이름과 각 과목의 점수를 입력받은 후, 문제에서 제시한 그대로 정렬을 하면 된다. 내림차순의 경우 마이너스로 바꾸면 된다. 제시한 대로 정렬을 수행하고 배열의 0번 인덱스를 출력하면 정답을 받을 수 있다.
💻 python code
n = int(input())
array = []
for _ in range(n):
data = input().split()
array.append((data[0], int(data[1]), int(data[2]), int(data[3])))
array.sort(key=lambda x : (-x[1], x[2], -x[3], x[0]))
for i in array:
print(i[0])
Author And Source
이 문제에 관하여([이코테] 정렬 - 국영수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@subinmun1997/이코테-정렬-국영수저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)