Programmers Coding Quiz #6 문자열 내림차순 배치

문제 설명

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

제한사항

  • str은 길이 1 이상인 문자열입니다.

입출력 예

sresult
'Zbcdefg''gfedcbZ'

풀이

키워드는 '내림차순 정렬' 내림차순 정렬로만 배치하면 자동으로 대문자도 뒤로가게된다. 기본적으로 대문자는 소문자보다 앞에오는 문자로 인식되기 때문이다.

def solution(s):
    return ''.join(sorted([v for v in s], reverse=True))

파이썬에서는 [리스트].sort()sorted([리스트])를 통해 정렬을 하곤한다. 둘 다 리스트를 대상으로 하는 메서드기 때문에 리스트 컴프리헨션으로 리스트로 치환 후 sorted(reverse=True)로 내림차순 정렬 후 다시 str.join을 써서 문자열로 치환해주면된다.

문제가 쉬웠기에 한 줄로 깔끔하게 나와서 잘 풀었나 싶었는데...

다른풀이

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

알고보니 리스트로 바꿀 필요없이 문자열에 sorted를 쓰면 리스트로 자동치환이 된다는 어메이징한 포인트.. 리스트에 딸린 내장 메서드인 sort와 달리 sorted는 그냥 함수기 때문에 이런 옵션이 있었던 것이다. 🤪

좋은 웹페이지 즐겨찾기