programming

프로그래밍 퀴즈 문자열 내림차순으로 배치하기 파이썬 풀이 및 해설


by Kitle · 2020. 07. 20.



출처 프로그래머스 : https://programmers.co.kr/learn/courses/30/lessons/12917

난이도 : Level 1 (max 5)

문제 설명

문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.

s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.


제한 사항

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

입출력 예

s return

Zbcdefg gfedcbZ


[풀이]

def solution(s):
return ''.join(sorted(s, reverse=True))
[해설]
풀이가 너무 잔인하다구요...
좀 더 쉽게 풀어보겠습니다.
우선 print(sorted(s)) 를 한번 출력해보겠습니다. 정렬은 sorted() 를 활용할 수 있어요.
['Z', 'b', 'c', 'd', 'e', 'f', 'g']

가 출력되었습니다. 여기서 리스트를 반대로 뒤집어 주는 방법도 있겠죠?
하지만 정렬 자체를 반대로 하는 기능도 있습니다. 대부분 내림차순/오름차순은 같이 제공되는 경우가 많죠.
sorted( ,reverse=True) 파라미터를 통해 할 수 있습니다. 이번엔 

print(sorted(s, reverse=True)) 를 출력해보겠습니다.
['g', 'f', 'e', 'd', 'c', 'b', 'Z'] 

벌써 원하는 결과가 나왔네요. 그런데 리스트의 각각 개별항목으로 쪼개져 있습니다. 이를 합치고 싶을때는 ''.join() 을 활용하면 됩니다.
print(''.join(sorted(s, reverse=True)))
을 출력해 봅시다.
gfedcbZ

로 잘 출력됩니다. 이제 print필요 없이 해당 결과만 리턴해주면 끝이에요. 정말 간단하죠?