Algorithm/Problems

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

공부좀하시졍 2022. 11. 8. 17:32

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

import sys

read = sys.stdin.readline

dots = []
n = int(read())

for i in range(n):
  dot = list(map(int, read().split()))
  dots.append(dot)

dots.sort(key=lambda x: (x[1],x[0]))

for i in range(n):
  print(dots[i][0],dots[i][1])

sort함수의 key 매개변수를 사용했다.

dots.sort(key=lambda x: (x[1],x[0]) 은 두 번째 인자로 정렬해준 후 같은 수일 경우 첫 번째 인자로 비교해주는 것이다.

dots.sort(key=lambda x: (x[0],-x[1]) 은 첫 번재 인자로 정렬해준 후 같은 수일 경우 두 번재 인자로 내림차순 정렬을 적용한 것이다.