문제풀이/일일연습문제

[sort]99클럽 코테 스터디 12일차 TIL + 프로그래머스/1/12917. 문자열 내림차순으로 배치하기

Mo_bi!e 2024. 8. 2. 18:03

문제 설명

문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.
s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.

제한 사항
  • str은 길이 1 이상인 문자열입니다.
입출력 예
s return
"Zbcdefg" "gfedcbZ"

 

 

<내코드>

def solution(s):
    result = sorted(s, reverse=True)
    answer = ''.join(result)
    return answer

1. 어제와 비교

- sort 와 sorted 의 차이를 명확히 이해하게 됨

=> 덕분에 sort는 list가 아니기 때문에 안쓰는거 아닌가 생각하게 됨

 

- list로 return 된것을 문자열로 바꾸는것

=> 곧바로 join을 생각하게 됨

 

2. 헤맨부분

- 문자열도 정렬이 된다고?

# 기본 정렬 순서
'a' < 'b' < ... < 'z' < 'A' < 'B' < ... < 'Z'

 

=> 문자열은 이터러블하기 때문에 개별문자분리되어 유니코드 값을 기준으로 정렬 가능함

추가로 아스키코드와 마찬가지로 동일한 순서로 정해져있음

 

- sorted 의 결과가 list로 return 된다고?

 이터러블한 객체를 정렬된 리스트로 반환

 

 

<모범사례>

def solution(s):
    # 문자열을 정렬하되 역순으로 정렬
    result = sorted(s, reverse=True)
    # 리스트를 문자열로 합치기
    answer = ''.join(result)
    return answer

- 큰 차이가 없음

 

<보충학습>

1. sorted 함수가 리스트로 리턴할 때의 예
 

=> 튜플, 세트, 딕셔너리의 key 모두 수정이 불가능한지 여부와 상관없이 sorted의 결과는 새로운 리스트를 반환하기 때문에 정렬이 가능하다.