문제 내용을 요약하자면, "주어진 N개의 점들에 대한 좌표값을 y값의 오름차순으로 정렬하라. 단 y값이 같을 경우 x값의 오름차순으로 정렬할 것."
import sys
n = int(sys.stdin.readline())
so = []
for i in range(n):
so.append(list(map(int, sys.stdin.readline().split())))
so.sort(key=lambda x: (x[1], x[0]))
for i in so:
print(i[0], i[1])
점들의 개수 N번 동안 for문을 돌린다.
입력받은 좌표들은 so라는 변수에 리스트 형태로 저장되게 되는데,
so = [[0, 4], [1, 2], [1, -1], [2, 2], [3, 3]]
이 리스트를 lambda식을 사용하여 key 값을 매개변수를 가지는 sort() 함수로 정렬해주면 된다.
파이썬의 sort() 함수는 오름차순으로 정렬해주는 함수이며 문자열 또한 오름차순으로 정렬이 된다.
sort(reverse=True) 또는 reverse()를 이용하여 내림차순으로도 구현이 가능하다.
lambda는 무명함수라고 불리며 그 이름대로 이름 없는 함수를 작성할 때 사용한다.
sorted ([list 혹은 dic], key = lambda x: [key로 지정하고 싶은 요소])
혹은
[list 혹은 dic].sort(key = lambda x: [key로 지정하고 싶은 요소])
이렇게 공식처럼 사용되고 있다.
sort함수의 key에 '요소 x를 받고, x[1]를 돌려준다'라는 lambda식을 사용한다고 이해하면 된다.