https://www.acmicpc.net/problem/11650
import sys
n = int(sys.stdin.readline())
data = []
for i in range(n):
x, y = map(int, sys.stdin.readline().split())
data.append((x, y))
# 첫 번째 인자인 x 좌표를 기준으로 오름차순으로 정렬
# 두 번째 인자인 y 좌표를 기준으로 오름차순으로 정렬
data.sort(key=lambda xy:(xy[0], xy[1]))
for xy in data:
print(xy[0], xy[1])
# 좌표 정렬하기
n = int(input())
data = dict() # 딕셔너리형 자료 형태
for i in range(n):
x, y = map(int, input().split())
# x:[y1, y2...] 형태의 딕셔너리
if x in data:
data[x].append(y)
else:
data[x] = [y] # 리스트 형태로 삽입
# x 좌표가 증가하는 순으로
# x 좌표가 같으면 y 좌표가 증가하는 순서로
for key in sorted(data.keys()):
# 만약 x 좌표가 같은 게 없으면 단순 출력
if len(data[key]) == 1:
print(key, data[key][0])
# x 좌표가 같으면
elif len(data[key]) >= 2:
# y 좌표가 증가하는 순서로
for value in sorted(data[key]):
print(key, value)
🔼 첫 시도에 제출한 코드. 파이썬의 dictionary 자료형을 사용하고 있다.
두 번째 시도에서는 아래 참고에서도 알 수 있듯이, 복수의 정렬 조건이 있을 때, 그 우선순위를 순서대로 key의 lambda 식에 넣어 주면 된다는 것을 알게 되어 이를 적용했다. + input을 sys.stdin.readline()으로 바꿔주었다. 결과는 통과!
파이썬 정렬의 다중조건! 반드시 기억해두자.