본문 바로가기

백준

[백준알고리즘] 11651번 좌표정렬하기2 파이썬 python

반응형

요약

: 그냥 y를 증가하는 순으로 나열한다. 만약 y좌표가 같을 경우 x를 우선순위에 둔다.

 

처음 짠 코드

import sys

num = int(sys.stdin.input())
arr = []

for _ in range(num):
    arr = list(map(int, sys.stdin.input().split()))
arr.sort(key=lambda x:(x[1], x[0]))
for i in range(arr):
    print(i[0], i[1])

근데 계속 런타임 에러가 뜬다.

이 문제 때문에 sys를 쓴건데 이러니 당황스러웠다.

 

해결

import sys

num = int(sys.stdin.readline())
arr = []

for i in range(num):
    arr.append(list(map(int, sys.stdin.readline().split())))
arr.sort(key=lambda x: (x[1], x[0]))
for i in arr:
    print(i[0], i[1])

input 대신 readline으로 하니 런타임 에러가 사라졌다.

 

+tip

sort를 쓸 때 첫번째 인자를 기준으로, 두번째 기준으로 sort할 수 있다.

난 arr.sort(key=lambda x:(x[1], x[0])를 썼는데,

arr = sorted(arr, key = lambda x : (x[1], x[0])  이렇게 써도 된다.

실제 맞은 코드

arr.sort(key=lambda x:(x[1], x[0]) 이거는 그냥

x[1]을 기준으로 sort하고 그 다음은 x[0]기준으로 sort하는 것이다.

반응형