[백준 11650] 좌표 정렬하기
sort()에서는 key에 어떤 임의의 정렬 함수를 설정하여 원하는 기준에 따라 정렬할 수 있습니다.
첫째 줄에 점의 개수 N이 주어지고 둘째 줄부터 x, y 좌표가 공백을 두고 주어집니다.
이 문제를 sort() 함수로 정렬하는 방법으로 해결하기 위해 2차원 리스트로 만들어보겠습니다.
2차원 리스트는 리스트 안에 리스트를 넣어서 만들 수 있으며 각 리스트 요소들은 ,(comma)로 구분합니다.
즉, ‘리스트 = [[a, b], [c, d], [e, f]…]’ 와 같은 형태를 가지게 됩니다.
따라서 좌표들을 모두 입력받는다면 x좌표, y좌표 순으로 입력된 리스트들이
하나의 큰 전체 리스트에 저장될 것입니다.
(ex> points = [[3, 4], [1, 1], [1, -1]])
이때, sort() 함수에 key를 설정해주면 그 key를 기준으로 삼아 리스트의 요소들을 정렬할 수 있습니다.
key에는 원하는 정렬 함수를 설정해줄 수 있는데, 보통 lambda 함수를 많이들 사용하여 간편하게 작성합니다.
(ex> sort(key=lambda x:x[0])은 리스트의 요소들 중 인덱스 0인 요소들을 기준으로 정렬합니다.)
따라서 우리는 x좌표를 우선적으로 정렬한 뒤에, y좌표 또한 정렬해야 하므로 조건을 괄호로 묶어 설정합니다.
즉, sort(key=lambda x:(x[0], x[1]))로 설정해주면 인덱스 0인 요소들을 우선적으로 정렬한 다음
인덱스 0인 요소들 중 같은 값을 가진 요소들에 대해 인덱스 1인 요소들을 기준으로 정렬합니다.
문제 : 백준 11650 - 좌표 정렬하기