백준 11650 (좌표 정렬하기) - Python

김종언·2024년 1월 28일
0

백준

목록 보기
12/18

문제

좌표를 오름차순으로 정렬하는 문제. sort()를 사용하지 못하게 하려고 y값을 넣은 줄 알았으나 y값 역시 sort()로 정렬 가능하다는 사실을 문제를 다 풀고 깨달았다.

아래는 내가 sort()를 사용하지 않고 아까 배운 insertion sorting 알고리즘을 사용한 코드이다.

import sys
N = int(input())
arr = []

for i in range(N):
    arr.append(list(map(int, sys.stdin.readline().split())))

for i in range(1, N):
    x = arr[i][0]
    y = arr[i][1]
    while i > 0:
        if arr[i-1][0] > x:
            arr[i-1], arr[i] = arr[i], arr[i-1]
            i -= 1
        elif arr[i-1][0] == x and arr[i-1][1] > y:
            arr[i-1], arr[i] = arr[i], arr[i-1]
            i -= 1
        else:
            break
for i in range(N):
    print(arr[i][0], arr[i][1])

입력을 sys.stdin.readline()으로 썼는데도 시간 초과가 나왔다. 내가 푸는 방식을 원하지 않는 모양이었따.

import sys
N = int(input())
arr = []

for i in range(N):
    arr.append(list(map(int, sys.stdin.readline().split())))

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

for i in arr:
    print(i[0], i[1])

문제를 풀게 된 코드이다. 사실 그냥 sort()해도 알아서 해주긴 하는데, 그걸 몰라서 lambda옵션까지 썼다. lambda는 어떤 우선순위로 정렬할 것인지 사용자가 직접 정할 수 있다.

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

이 코드에서는 이차원 배열에서 각 요소 배열의 [0]을 우선순위로 하고 그 다음 우선순위를 [1]로 한다. -를 통해 reverse또한 사용할 수 있다.

뻘짓을 했지만 뻘짓을 통해 lambda 활용법을 배울 수 있어서 좋았다.

profile
나는 김종언이다.

0개의 댓글