[백준] 11651번 - 좌표 정렬하기 2 | 파이썬

SangJin Ham·2023년 6월 15일
0

백준

목록 보기
3/51
post-thumbnail

7568번 - 덩치


문제

2차원 평면 위의 점 N개가 주어진다. 좌표를 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.


입력

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


출력

첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다.


예제 입력 1

5
0 4
1 2
1 -1
2 2
3 3

예제 출력 1

1 -1
1 2
2 2
3 3
0 4

코드

import sys

N = int(sys.stdin.readline().strip())

coordinates = []

for i in range(N):
  coordinates.append(list(map(int, sys.stdin.readline().strip().split())))

coordinates = sorted(coordinates, key=lambda a : (a[1], a[0]))

for coordinate in coordinates:
  print(*coordinate)

풀이

이 문제의 경우 lambda를 활용하면 간단하게 풀 수 있다.

Ncoordinates에 2차원 좌표들을 입력 받은 뒤, lambda를 활용해 y좌표를 기준으로 먼저 정렬시킨다.
그 후, x좌표를 기준으로 정렬시켜 문제에서 요구하는 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서로 정렬할 수 있다.

또, print를 이용해 리스트를 출력할 때 *를 앞에 붙이면 대괄호를 생략하고 출력이 가능하다

profile
끄적끄적

0개의 댓글