알고리즘

파이썬 sort함수 key 기술

jwjwvison 2022. 5. 10. 18:07

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

 

11651번: 좌표 정렬하기 2

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

www.acmicpc.net

 

 이 문제는 x,y 좌표를 받고 1순위로 y좌표, 2순위로 x좌표를 이용해 정렬하는 문제이다. 파이썬을 이용한다면 sort함수 인자인 key=lambda를 이용해 쉽게 해결할 수 있다.

N=int(input())
arr=[]
for i in range(N):
    a,b=map(int,input().split())
    arr.append([a,b])
arr.sort(key= lambda x: (x[1],x[0]))

for a,b, in arr:
    print(a,b)

 lambda x: (x[1],x[0])의 뜻은 y좌표로 먼저(두번째 숫자) 정렬하고 같은 값이 있으면 x좌표로 정렬 하라는 의미이다.