📚 출처 - 11651 - 좌표 정렬하기 2
문제 설명
2차원 평면 위의 점 N개가 주어진다. 좌표를 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.
출력
첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다.
입출력 예
예제 입력 | 예제 출력 | |
---|---|---|
5 0 4 1 2 1 -1 2 2 3 3 | 1 -1 1 2 2 2 3 3 0 4 |
다음 문제는 정렬 알고리즘으로 해결하는 문제입니다.
문제에서 정렬에 대한 조건을 2가지 주었는데 이 경우 쉽게 해결하는 방법은람다
를 사용해 해결하는 방법입니다.
람다를 사용하면+
라면 오름차순,-
라면 내림차순으로 정렬 가능하다. 또한 원하는 조건 순서에 맞춰 아래와 같이 작성해주면 그대로 정렬이 가능하다.
import sys
input = sys.stdin.readline
N = int(input())
coord = []
for i in range(N):
coord.append(list(map(int, input().split())))
coord = sorted(coord, key = lambda x : (x[1], x[0]))
for i in range(N):
print(coord[i][0], coord[i][1])
다음은 11650. 좌표 정렬하기이다.
이 문제와 거의 동일하니 이해가 잘 가지 않는다면 참고해 보는것이 좋을 것 같다.