영수증 날짜순 정리
지갑 속 영수증을 날짜순으로 늘어놓으면 지난주 지출만 골라 더하기 쉬워집니다.
데이터에 순서를 부여해 다음 작업을 더 단순하게 만드는 전처리
정렬 자체가 목적일 때도 있지만, 탐색·중복 제거·두 포인터 같은 후속 작업을 빠르고 단순하게 만들기 위해 더 자주 씁니다. 비용을 한 번 지불하고 이후 연산의 구조를 바꾸는 선택입니다.
코드를 생각하지 말고, 아래 상황이 어떤 순서로 움직이는지만 따라가 보세요.
지갑 속 영수증을 날짜순으로 늘어놓으면 지난주 지출만 골라 더하기 쉬워집니다.
완주한 순서가 아니라 기록이 빠른 순서로 참가자를 다시 배치해야 1등부터 바로 알 수 있습니다.
코딩 테스트의 장난감 예제를 넘어, 실제 시스템에서 같은 원리가 어디에 숨어 있는지 연결해 보세요.
점수, 시간, 우선순위가 여러 개인 데이터를 key 함수로 정렬합니다.
같은 키끼리 모아 병합·집계가 연속적으로 일어나게 합니다.
가격 낮은 순, 최신 순처럼 사용자가 선택한 기준으로 결과를 보여줍니다.
이름순으로 정리해 사람이 원하는 연락처를 빠르게 훑어 찾게 합니다.
배송 마감 시각과 지역순으로 주문을 정렬해 묶음 작업을 단순하게 만듭니다.
선택 정렬은 매 단계 최솟값을 골라 앞에 두며 O(n²)입니다. 실무에서는 파이썬의 안정적인 Timsort(sorted, list.sort)를 사용하며 일반적으로 O(n log n)입니다.
| 연산 | Python 표현 | 시간 |
|---|---|---|
| 내장 정렬 | sorted(items) | O(n log n) |
| 제자리 정렬 | items.sort() | O(n log n) |
| 최솟값 선택 n회 | selection sort | O(n²) |
| 정렬 후 병합 | two pointers | O(n + m) |
[3, 1, 2]에서 최솟값 1 선택3과 1을 바꿔 [1, 3, 2]남은 [3, 2]에서 2 선택[1, 2, 3]list.sort()는 리스트를 바꾸고 None을 반환합니다.설명을 닫고 먼저 풀어본 뒤, 막히는 지점에서 어떤 연산이 필요한지 다시 떠올려 보세요.
Easy 연습 1 / 7
Python으로 풀기Easy 연습 2 / 7
Python으로 풀기Easy 연습 3 / 7
Python으로 풀기Easy 연습 4 / 7
Python으로 풀기Easy 연습 5 / 7
Python으로 풀기Easy 연습 6 / 7
Python으로 풀기Easy 연습 7 / 7
Python으로 풀기Medium 연습 1 / 3
Python으로 풀기Medium 연습 2 / 3
Python으로 풀기Medium 연습 3 / 3
Python으로 풀기