공부하기/백준

[Python] 백준 풀기 11650 - 좌표 정렬하기

XEV 2022. 10. 23. 20:01

파이썬 백준 11650번

실버4

https://www.acmicpc.net/problem/11650

 

11650번: 좌표 정렬하기

첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.

www.acmicpc.net

 

 

 

 

문제 보기

분류: 정렬

 

 

 

문제 풀기

sort() 함수에 옵션을 적용하여 사용해 볼 수 있는 문제였다.

2차원 배열로 모든 좌표를 입력 받고, sort() 를 적용해 주는데 key 를 적용하여 원하는 순서로 x, y 좌표를 정렬할 수 있다.

문제에서 제시한 "x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬" 를 적용시키기 위해서

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

와 같이 코드가 작성 되었다.

 

 

 

코드 보기

import sys
inputdata = sys.stdin.readline

def fnSortCoordinates(coordinate_ls):
    coordinate_ls.sort(key=lambda x: (x[0], x[1]))
    print(coordinate_ls)            # test print
    
    return coordinate_ls

if __name__ == "__main__":
    N = int(inputdata().strip())
    coordinate_ls = [list(map(int, inputdata().split())) for _ in range(N)]
    print(coordinate_ls)            # test print
    
    result = fnSortCoordinates(coordinate_ls)
    
    for res in result:
        print(*res)



# 5
# 3 4
# 1 1
# 1 -1
# 2 2
# 3 3

# [[3, 4], [1, 1], [1, -1], [2, 2], [3, 3]]
# [[1, -1], [1, 1], [2, 2], [3, 3], [3, 4]]

# 1 -1
# 1 1
# 2 2
# 3 3
# 3 4