코테 문제를 풀다보면, 리스트를 특정 기준으로 정렬하는 문제가 많이 보였다. 단순히 sort(), sorted()를 사용해서 오름차순 내림차순으로 풀 수 없는 문제들도 있지만 레벨이 올라가면서 없는 문제들도 많았다.그래서 이러한 문제들을 풀 수 있는 방법을 정리해보려 한다.
sorted(arr, key = lambda x : x)
- arr : 반복할 단위
- x : 각 원소를 x라고 할 때 어떤 기준으로 정렬할지
다양한 예시를 통해 사용법을 알아보자.
Ex1 ) 리스트의 원소를 기준으로 정렬하기(오름차순)
arr = ['abc', 'bca', 'bac']
sorted(arr, key = lambda x : x)
['abc', 'bac', 'bca']
모든 정렬은 기본적으로 오름차순이기 때문에 오름차순으로 정렬된 결과가 나온다.
Ex2) 리스트 원소의 첫글자 기준으로 정렬하기
arr = ['abc', 'bca', 'bac']
sorted(arr, key = lambda x : x[0])
['abc', 'bca', 'bac']
리스트 각 원소를 x로 받는다고 생각하면 된다. 이 때, bca와 bac는 첫글자 기준으로 같기 때문에 입력받은 그대로 정렬된다.
Ex3) 리스트 원소 내 글자 길이 순으로 정렬하기
arr = ['i', 'im','no','but','cannot','hesitate']
sorted(arr, key = lambda x: len(x))
['i', 'im', 'no', 'but', 'cannot', 'hesitate']
정렬할 때, 첫 번째 정렬 기준이 같을 경우에 다른 기준을 적용할 수도 있다.
Ex1) 첫번째 원소 기준으로 정렬하고 같은 경우엔 2번째 기준으로 정렬하기
arr = ['abc', 'bca', 'bac']
sorted(arr, key = lambda x : (x[0], x[1]))
['abc', 'bac', 'bca']