https://www.acmicpc.net/problem/11650
import sys
input = sys.stdin.readline
arr = [list(map(int, input().split())) for _ in range(int(input()))]
arr.sort(key=lambda i: i[1])
arr.sort(key=lambda i: i[0]) # 안정 정렬
for i in arr:
print(*i)
i[1]
) 기준으로 정렬 -> x좌표(i[0]
) 기준으로 정렬.sort()
함수는 안정 정렬(stable sort); 정렬 후에도 같은 key들의 상대적인 순서가 정렬 이전과 같게 유지2 * O(N log N)
import sys
input = sys.stdin.readline
arr = [list(map(int, input().split())) for _ in range(int(input()))]
arr.sort(key=lambda i: (i[0], i[1]))
for i in arr:
print(*i)
.sort()
를 한 번만 사용했다.O(N log N)
(x, y)
튜플을 생성해 key로 사용import sys
input = sys.stdin.readline
arr = [list(map(int, input().split())) for _ in range(int(input()))]
arr.sort(key=lambda i: (i[0], i[1]))
print("\n".join(f"{x} {y}" for x, y in arr))
unpacking
에서 "\n".join()
으로 수정했다.arr
의 모든 원소를 문자열에 담는 대규모 할당이 발생해서 그렇다.import sys
input = sys.stdin.readline
arr = [list(map(int, input().split())) for _ in range(int(input()))]
arr.sort()
print("\n".join(f"{x} {y}" for x, y in arr))
.sort()
만 써도 된다는 것(x, y)
형태의 tuple이므로 자동으로 x
우선으로 정렬하고, x
가 동일하면 y
기준으로 오름차순 정렬한다.unpacking
은 메모리 측면에서, "\n".join()
은 시간 측면에서 유리하다.sys.stdout.write
는 상황에 맞게 쓰자.print = sys.stdout.write
를 추가하여 제출했더니 시간만 증가했다(+68ms).