Python) 파이썬에서 문자열 내의 문자 정렬
이 글을 작성하게 된 이유
- 평화롭게 알고리즘 문제를 풀다가 문자열 내부의 문자들을 정렬해야 하는 경우가 생겼는데
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))
와 같이 쓰면 된다.