문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요. s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.
s | result |
---|---|
'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는 그냥 함수기 때문에 이런 옵션이 있었던 것이다. 🤪