Learning Log

[Python] list에 sorted 함수 적용시

카제xd 2023. 8. 26. 02:38

백준 11650번 문제를 풀다가 list에 sorted 함수를 적용하면 어떻게 되는지 보게 되었다.

 

 

import sys
input = sys.stdin.readline

n = int(input())
arr = []

for _ in range(n):
    arr.append(list(map(int, input().split())))

arr = sorted(arr)

for a in arr:
    print(*a)
    


# [입력]
# 5
# 3 4
# 1 1
# 1 -1
# 2 2
# 3 3


# [출력]
# 1 -1
# 1 1
# 2 2
# 3 3
# 3 4

 

 

[x, y] 좌표값들로 구성된 2차원 리스트를 만들고 sorted 함수를 적용하면,

우선 x좌표가 증가하는 순으로, 만약 x좌표가 같으면 y좌표가 증가하는 순서로 알아서 정렬해준다.

 

 

 

다만!!!

정수와 문장열은 정렬기준이 다르다는 점에 유의해야 한다.

 

정수 : 10 > 9

문자열 : '10' < '9'

 

l = [['6','2'],['-5','4'],['10','3'],['3','6']]
sorted(l)

# [['-5', '4'], ['10', '3'], ['3', '6'], ['6', '2']]

 

따라서 처음에 input을 받고 나서 이들을 int로 변환해주는 작업이 필요하다.

 

 


 

y좌표값 기준으로 우선적으로 정렬을 하고 싶다면 아래와 커스터마이징을 할 수 있다.

 

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

 

+) x[1] 이런 것 앞에 '-'를 붙이게 되면 역순으로 정렬해준다.