본문 바로가기

코딩테스트 문제풀이

Python sort()에서의 key lambda 사용하기

728x90

SW마에스트로를 준비하는과정에서 자꾸 문법을 잊어먹는다 ... 그래서 한번 정리를 하고 가는것이 좋다고 생각했다.

 

 

a라는 리스트가 있다고 가정을 하면,

첫번째 인자를 기준으로 정렬: a.sort(key=lambda x:x[0]) 

 

 

두번째 인자를 기준을 정렬: a.sort(key=lambda x:x[1])

 

첫번쨰 인자를 오름차순으로 정렬하고, 두번쨰 인자를 내림차순으로 정렬하고싶다면 ?

 

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

 

 

파이썬에는 sort()라는 내장 함수가 존재해 간단하게 오름차순, 내림차순으로 리스트 정렬이 가능하다.

 

1. 리스트 정렬하기

 

- 오름차순으로 정렬하기

 

arr = [2,3,4,5,1]

arr.sort()

print(arr)
# [1,2,3,4,5]

 

- 내림차순으로 정렬하기

 

arr = [2,3,4,5,1]

arr.sort(reverse=True)

print(arr)
# [5,4,3,2,1]

 

 

2. 2차원 배열 정렬하기

 

- 기본 sort() 사용하기

 

arr[i]를 기준으로 오름차순으로 정렬되는 것을 확인할 수 있다.

 

arr = [[2,3],[1,2],[0,4]]

arr.sort()

print(arr)
# [[0, 4], [1, 2], [2, 3]]

 

- 특정 값 기준으로 정렬하기

 

Case1. 행 기준으로 정렬하기

 

첫 번째 값을 기준으로 오름차순 정렬된 것을 확인할 수 있다.

 

arr = [[2,3],[1,2],[0,4]]

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

print(arr)
# [[0, 4], [1, 2], [2, 3]]

 

이 때, x 값에 -를 취해주면 내림차순 정렬을 할 수 있다.

 

arr = [[2,3],[1,2],[0,4]]

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

print(arr)
# [[2, 3], [1, 2], [0, 4]]

 

 

Case2. 열 기준으로 정렬하기

 

두 번째 값을 기준으로 오름차순 정렬된 것을 확인할 수 있다.

 

arr = [[2,3],[1,2],[0,4]]

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

print(arr)
# [[1, 2], [2, 3], [0, 4]]

 

다음과 같이  두 번째 값이 같을 경우에는 첫 번째 값을 기준으로 오름차순 정렬 할 수도 있다.

 

arr = [[2, 3], [1, 2], [0, 4], [2, 2]]

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

print(arr)
# [[1, 2], [2, 2], [2, 3], [0, 4]]

 

 

728x90

'코딩테스트 문제풀이' 카테고리의 다른 글

dfs - 알파벳 BackTracking  (0) 2023.02.16
DP-가장 높은 탑 쌓기  (0) 2023.02.15
백준 숨바꼭질 BFS  (0) 2023.02.14
DP 최대선 연결하기  (0) 2023.02.14
DP - Top-Down 방식과 Bottom-up  (0) 2023.02.14