정렬 활용법

문곰이·2020년 10월 17일
0

알고리즘스터디

목록 보기
3/3
post-thumbnail

안녕하세요, 오늘은 정렬에 대해서 알아보려고 합니다.
다만 제가 주로 다룰 내용은 어떤 정렬이 있는가에 관한 내용이 아니라 이미 잘 구현된 라이브러리를 활용하는 방법에 대해서 다룰까 합니다.
파이썬 언어를 기준으로 작성했습니다.

목차

  1. sort() & sorted()
  2. 내림차순 정렬
  3. 그 외 활용법
  4. 퀴즈

sort() & sorted()

파이썬 list는 sort()를 호출해서 사용할 수 있습니다.
무슨 말인지 코드를 통해서 살펴보겠습니다.

a = [5,3,2,7,9]
a.sort()
print(a) #[2,3,5,7,9]

a라는 리스트 자체에서 내장 함수 sort()를 호출하면 a 리스트의 값들이 오름차순으로 정렬이 됩니다.

이번에는 sorted()에 대해서 알아보겠습니다.
sorted()는 sort()와 달리 약간의 차이점 빼고는 유사합니다.
차이점은 바로 정렬된 리스트를 반환한다는 점입니다.

a = [5,3,2,7,9]
b = sorted(a)
print(a) #[5,3,2,7,9]
print(b) #[2,3,5,7,9]

저는 정렬하기 전의 값이 필요하다면 sorted() 아니라면 sort()를 사용합니다.

내림차순 정렬

기본적으로 오름차순 정렬이 default로 설정되어 있습니다.
그런데 내림차순으로 정렬하고 싶을 때도 있잖아요??

a = [5,3,2,7,9]
a.sort(reverse=True)
print(a) #[9,7,5,3,2]

이렇게 함수 안에 reverse = True 옵션을 주면 내림차순으로 정렬할 수 있습니다.

그 외 활용법

더 다양하게 활용하는 아이디어를 얻기 위해 파이썬 공식 문서를 찾아보겠습니다.

sort(*, key=None, reverse=False)

reverse는 방금 알아보았습니다.
그렇다면 key는 무엇일까요??
key에는 인자 하나를 받아들이는 함수를 지정할 수 있습니다.
기본값 None은 리스트 항목들이 별도의 키값을 계산하지 않고 직접 정렬된다는 것을 의미합니다.
즉 key를 이용하면, 다양한 정렬을 할 수 있습니다.

절댓값 정렬

부호와 상관없이 절댓값으로 값을 정렬하고 싶습니다.

a = [1,-1,-5,6,8]
a.sort()
print(a) #[-5, -1, 1, 6, 8]

그냥 sort()를 사용하면 원하는 값을 얻을 수 없습니다.
key를 활용해볼까요?

a = [1,-1,-5,6,8]
a.sort(key=abs)
print(a) #[1, -1, -5, 6, 8]

짜잔. abs는 파이썬에 내장된 절댓값을 반환해주는 함수입니다.
key가 함수를 받기 때문에 뒤에 괄호를 붙이지 않아도 됩니다.
그 결과 우리가 원하는 절댓값 기준으로 정렬하는 예제가 완성됐습니다.

퀴즈

간단하게 생각해볼 점들을 나열해보겠습니다.
1.list가 아닌 자료형을 정렬하고 싶다면?
2.문자열은 어떻게 정렬이 될까요?
3.2번을 생각해보신 분들은 큰 수 만들기 문제를 도전해보세요.

profile
한 걸음 뒤에

0개의 댓글