본문 바로가기
카테고리 없음

파이썬 정렬 함수 (백준 10825)

by SayHiWorld 2024. 10. 4.

우선 백준 10825에서의 정렬 조건은 다음과 같다. 

 

위와 같은 정렬 조건을 '복합 정렬'이라고 부른다.

복합 정렬 : 여러 기준을 결합하여 데이터를 정렬하는 것을 의미한다. 이 때, 각 기준을 순서대로 적용하여 정렬 우선순위를 정하는 방식이다. 

 

 

 

파이썬에는 복합 정렬을 위한 정렬 함수가 존재한다. 

 

결론부터 얘기하자면, 아래와 같이 작성된다. 

# 정렬
students_sorted = sorted(students, key=lambda x: (-x[1], x[2], -x[3], x[0]))

 

  1. students라는 리스트를 정렬함
  2. 기준이 될 인덱스를 제공함
  3. 나열된 순서대로 우선 순위가 부여됨
  4. -가 앞에 붙으면, 내림차순 정렬됨.

해당 함수는 앞 순서에서 정렬한 순서를 그대로 유지하면서 다음 정렬을 이어나가므로, 해당 문제를 해결하는 데 적합하다. 

 

# 입력 받기
import sys
input = sys.stdin.read
data = input().splitlines()

# 학생 수
N = int(data[0])

# 학생 정보 리스트 생성
students = []

for i in range(1, N + 1):
    name, korean, english, math = data[i].split()
    students.append((name, int(korean), int(english), int(math)))

# 정렬
students_sorted = sorted(students, key=lambda x: (-x[1], x[2], -x[3], x[0]))

# 결과 출력
for student in students_sorted:
    print(student[0])