특정 기준으로 리스트 정렬하기

미쯔·2024년 3월 3일
0

💻Programming

목록 보기
4/6

코테 문제를 풀다보면, 리스트를 특정 기준으로 정렬하는 문제가 많이 보였다. 단순히 sort(), sorted()를 사용해서 오름차순 내림차순으로 풀 수 없는 문제들도 있지만 레벨이 올라가면서 없는 문제들도 많았다.그래서 이러한 문제들을 풀 수 있는 방법을 정리해보려 한다.


특정 기준으로 리스트 정렬하기

sorted(arr, key = lambda x : x)

  • arr : 반복할 단위
  • x : 각 원소를 x라고 할 때 어떤 기준으로 정렬할지

key가 하나일 때

다양한 예시를 통해 사용법을 알아보자.

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']

key가 두 개일 때

정렬할 때, 첫 번째 정렬 기준이 같을 경우에 다른 기준을 적용할 수도 있다.
Ex1) 첫번째 원소 기준으로 정렬하고 같은 경우엔 2번째 기준으로 정렬하기

arr = ['abc', 'bca', 'bac']
sorted(arr, key = lambda x : (x[0], x[1]))
['abc', 'bac', 'bca']

0개의 댓글