여러 필드로 정렬하기
튜플 키와 reverse로 동률을 처리합니다
여러 필드로 정렬하기은(는) CoddyKit의 무료 Competitive Programming Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Competitive Programming Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Competitive Programming Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
기준 하나로 부족할 때
때로는 첫 번째 필드가 같아서 동률을 해소해야 합니다. 이때는 우선순위에 따라 필드를 나열하는 튜플 key를 사용하면 됩니다.
튜플은 왼쪽부터 비교합니다
Python은 튜플을 원소 단위로 비교합니다. 첫 번째 항목을 확인하고, 첫 번째 항목이 같을 때만 두 번째 항목을 확인합니다.
print((1, 9) < (1, 2)) # False
print((1, 2) < (2, 0)) # True두 필드를 위한 튜플 key
key에서 튜플을 반환하면 첫 번째 필드, 그다음 두 번째 필드 순으로 정렬할 수 있습니다. 이렇게 하면 사람을 나이순으로 정렬한 뒤 이름순으로 정렬할 수 있습니다.
people.sort(key=lambda p: (p.age, p.name))주 정렬 기준과 보조 기준
가장 왼쪽 필드가 주 정렬 기준이고, 다음 필드가 동률을 해소하는 기준입니다. 튜플의 순서를 바꾸면 어떤 필드가 우선하는지도 바뀝니다.
data = [(2, "b"), (1, "z"), (1, "a")]
print(sorted(data))
# [(1, 'a'), (1, 'z'), (2, 'b')]오름차순과 내림차순 섞기
한 필드는 오름차순으로, 다른 필드는 내림차순으로 정렬하려면 튜플 key 안에서 내림차순으로 정렬할 숫자 필드의 부호를 반전하십시오.
items.sort(key=lambda x: (x.group, -x.score))부호 반전 방법은 숫자에만 적용됩니다
마이너스 기호를 사용하는 방법은 숫자에만 적용됩니다. 문자열 필드의 순서를 뒤집으려면 부호를 반전하는 대신 정렬을 여러 단계로 나누어야 합니다.
안정적인 정렬을 여러 단계로 적용하기
정렬은 안정적이므로 보조 기준으로 먼저 정렬한 다음 주 기준으로 정렬할 수 있습니다. 그러면 동률 항목의 순서도 올바르게 유지됩니다.
rows.sort(key=lambda r: r.name)
rows.sort(key=lambda r: r.age, reverse=True)여러 단계 정렬과 하나의 튜플 비교
간단한 경우에는 하나의 튜플 key가 더 빠르고 명확합니다. 한 필드는 문자열로 오름차순, 다른 필드는 내림차순으로 정렬해야 할 때는 여러 단계 정렬이 효과적입니다.
속도를 위한 itemgetter
인덱스 기반 튜플에는 itemgetter가 깔끔하고 빠른 key가 됩니다. 우선순위에 따라 여러 필드를 한 번에 가져옵니다.
from operator import itemgetter
rows.sort(key=itemgetter(1, 0))동률 해소로 출력을 결정적으로 만들기
id처럼 마지막에 고유한 동률 해소 기준을 추가하면 실행할 때마다 출력이 안정적으로 유지됩니다. 엄격한 채점기를 사용하는 문제에서 특히 유용합니다.
코딩 전에 key를 설계하기
문제를 읽고 정렬 기준이 될 필드를 순서대로 적어 보십시오. 명확한 튜플 key 하나면 복잡한 비교를 짧은 한 줄로 바꿀 수 있습니다.
빠른 확인
학생을 성적 오름차순으로 정렬한 다음 이름 오름차순으로 정렬하려고 합니다.
정리
튜플 key로 동률을 해소하고, 내림차순에는 숫자의 부호를 반전하며, 방향이 섞인 경우에는 안정적인 정렬을 여러 단계로 적용할 수 있습니다. 동률 해소 기준은 출력을 깔끔하게 유지합니다. ✅
자주 묻는 질문
“여러 필드로 정렬하기” 강의는 무료인가요?
네 — “여러 필드로 정렬하기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Competitive Programming Academy 강의 전체를 잠금 해제할 수 있습니다. Competitive Programming Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“여러 필드로 정렬하기”에서 뭘 배우나요?
튜플 키와 reverse로 동률을 처리합니다 브라우저에서 직접 실행하는 실습 코드로 Competitive Programming Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Competitive Programming Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Competitive Programming Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.
“여러 필드로 정렬하기” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Competitive Programming Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Competitive Programming Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.