이 글을 작성하게 된 이유

  • 평화롭게 알고리즘 문제를 풀다가 문자열 내부의 문자들을 정렬해야 하는 경우가 생겼는데 sorted()로 정렬이 되지 않았다. 그래서 구글 검색!

파이썬에서의 정렬 함수

  • 파이썬에서 정렬하려면 sort()sorted() 두 가지 함수를 이용할 수 있다.
  • 그 중에서도 sort()는 리스트의 멤버함수이기 때문에 리스트를 정렬하고자 하는 경우에는 arr.sort()를 사용하면 간편하게 정렬할 수 있다.
  • 리스트가 아닌 iterable을 정렬할 때엔 sorted() 함수를 쓰면 되는데 dabc와 같은 문자열 안에 있는 문자들을 정렬해서 abcd로 만들려고 할 때에는 그냥 sorted()를 쓰면 정렬이 안 된다.

문자열 내의 문자 정렬하기

  • 그러면 어떻게 해야 할까? 파이썬에서의 string 멤버함수에는 sort()가 없다.
  • 왜냐면 string의 경우 문자열 첫 글자로 주소값으로 참조를 하기 때문에 원본이 변경되면 해당 문자열을 찾을 수 없게 된다.
s1 = sorted(s)
  • 대신 sorted(s)를 사용할 수 있는데 sorted()의 반환형이 list이기 때문에 정렬된 결과를 보려면 위와 같이 다른 변수에 대입하는 식을 써야 한다.
  • 하지만 나는 처음에 그냥 sorted(s) 라고만 쓰고 다른 변수에 저장조차 하지 않았기 때문에 정렬된 결과를 볼 수 없는 것이었다.😅
  • 이것을 하나의 문자열로 만들기 위해서는 str = ''.join(sorted(s))와 같이 쓰면 된다.

출처