📖이 포스팅은 '파이썬 알고리즘 인터뷰 - 박상길님'을 보고 작성되었습니다.
[여러 가지 정렬 방법]
[sorted]
- sorted( )의 경우엔 정렬한 값을 리스트로 돌려준다.
a = [2,5,6,7,1]
print(sorted(a))
b = "asdsadv"
print(sorted(b))
[출력 값]
[1, 2, 5, 6, 7]
['a', 'a', 'd', 'd', 's', 's', 'v']
- 위의 출력 값과 같이 문자열로 받은 경우에도 list로 결과를 돌려준다. 그렇다면 이를 다시 문자열로 받고 싶을 땐 어떻게 해야 할까??
[list를 다시 문자열로 - join( )을 이용하자]
"".join(sorted(b))
- join( )을 사용해서 정렬을 받으면 list형태가 아닌 문자열 형태로 정렬된 값을 돌려받을 수 있다.
[출력 값]
aaddssv
[sort( ) VS sorted( )]
sorted( ) | sort( ) |
- 정렬 결과를 별도로 리턴해준다. (list 형태로) - key =옵션을 지정해 정렬을 위한 키 또는 함수를 별도로 지정할 수 있다. |
- 리스트 자체를 정렬할 수 있다. (이를 제자리 정렬이라고 한다. 제자리 정렬은 입력을 출력으로 덮어쓰기 때문에 별도의 추가 공간이 필요하지 않고, 리턴값이 없다.) - 정렬 결과를 별도로 리턴해주지 않는다. |
[sorted(key= )]
c = ['av','dadas','adasdasd']
print(sorted(c,key=len))
[출력 값]
['av', 'dadas', 'adasdasd']
- key = 옵션 지정을 해 정렬을 위한 키 또는 함수를 별도로 지정할 수 있다. (함수도 가능!!)
a = ['cde','cfc', 'abc']
def fn(s):
return s[0], s[-1]
print(sorted(a,key=fn))
[출력값]
['abc', 'cfc', 'cde']
- 함수를 별도로 지정한 방법
- 이 경우 index[0]번째를 기준으로 정렬한 뒤 s[-1] 맨 끝에 있는 문자를 기준으로 정렬해서 ['abc', 'cde', 'cfc' ] 가 아닌 위와 같은 출력값을 내놓은 것이다.
[함수 별도 지정이 아닌 람다 표현식을 이용한 방법]
a = ['cde','cfc', 'abc']
print(sorted(a,key=lambda x: (x[0], x[-1])))
'자료구조와 알고리즘 > 🥑알고리즘' 카테고리의 다른 글
[알고리즘][배열] - 1. 배열(Array)이란? (0) | 2022.02.19 |
---|---|
[알고리즘][문자열 조작] - 6. 가장 긴 팰린드롬 부분 문자열 (0) | 2022.02.17 |
[알고리즘][문자열 조작] - 5. 그룹 애너그램 (0) | 2022.02.16 |
[알고리즘][문자열 조작] - 4. 가장 흔한 단어 (0) | 2022.02.16 |
[알고리즘][문자열 조작] - 3. 람다와 +연산자를 이용 (0) | 2022.02.16 |