[백준 #11651] 좌표 정렬하기 2(Python)

Updated:

문제 설명

예제 입출력

이 문제는 11650번 문제에서 정렬하는 기준이 x좌표에서 y좌표로 바뀐 문제이다. y좌표가 증가하는 순서로 정렬하며, y좌표가 같으면 x좌표가 증가하는 순서로 정렬한다. 입력받은 좌표를 list에 넣고 list의 s좌표, y좌표를 swap했다. (파이썬 swap 너무 편-안) 그리고 sort 함수 쓰고 출력 직전에 다시 swap했다. 그러면 y를 기준으로 출력한 것이 되므로 맛있게 풀게 된다.

Code


import sys
N=int(sys.stdin.readline())
li=[]
for _ in range(N):
    li.append(list(map(int, sys.stdin.readline().split())))
for i in range(N):
    li[i][0],li[i][1]=li[i][1],li[i][0]
li.sort()
for i in range(N):
    li[i][0],li[i][1]=li[i][1],li[i][0]
    print(li[i][0], li[i][1])

맛있게 풀었다고 생각하여 다른 사람들의 코드를 찾아보았다.

다른 사람의 코드


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

더 맛있다.
또 모르는 부분을 알게 되었다. key값을 이용하여 정렬하는 것인데 따로 정리하여 추후 포스팅으로 다룰 것이다. 꾸준히 유용하게 쓰일 것 같으므로 확실히 익혀둬야겠다.

Leave a comment