프로그래밍 공부/Python

[Python] tuple을 원소로 가지는 리스트의 정렬

hueco 2021. 10. 22.

 

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

 

11650번: 좌표 정렬하기

첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.

www.acmicpc.net

 

위의 문제는 x좌표를 기준으로 오름차순으로 정렬하고, x좌표가 같은 경우 y좌표를 기준으로 오름차순으로 정렬하여 결괏값을 출력하는 문제이다.

문제에서 요구하는 방법대로 구현하기 위해 파이썬의 내장함수와 key 속성을 이용하여 문제를 해결했다. 

 

하지만 패캠의 강의를 들으며 미쳐 알지 못했던 부분을 알게 되었다. 그 내용은 다음과 같다.

 

파이썬의 기본 정렬 라이브러리는 기본적으로 튜플의 인덱스 순서대로 오름차순 정렬한다.

 

이 내용에 따르면 내 코드에서 key를 이용해 정렬 조건을 주었지만 굳이 이 부분에 해당하는 코드를 추가할 필요가 없게된다.

왜냐하면 튜플의 첫번째 원소를 기준으로 정렬하고, 같은 원소가 있다면 두번째 원소를 기준으로 정렬이 실행되기 때문이다.

따라서 위의 코드는 다음과 같이 key 속성을 제외해도 문제를 해결할 수 있다.

 

댓글