코딩 테스트 연습/[프로그래머스] Python

[LV.2] 연습문제 > 문자열 내림차순으로 배치하기

duswjd_data 2025. 6. 19. 09:23

문제

https://school.programmers.co.kr/learn/courses/30/lessons/12917

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr


문제 설명

  • 문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴
    • s는 영문 대소문자로만 구성
    • 대문자는 소문자보다 작은 것으로 간주
  • 제한 사항) str은 길이 1 이상인 문자열

정답 코드

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

풀이 설명

 

  • sorted(s, reverse=True): 문자열 s를 내림차순으로 정렬
  • ''.join(...): 리스트를 문자열로 합치기

 


오답 코드

def solution(s):
    order = []
    for i in str(s):
        order.append(i)
    result = sorted(order).reverse()
    return ''.join(result)

틀린 이유

  • result = sorted(order).reverse() 코드 오류
  • .reverse() 는 리스트 자체를 제자리에서 뒤집는 메서드, ❗결과 반환X (헷갈리지 말기!!) 
    1. sorted(order) > 새로운 리스트를 반환
    2. sorted(order).reverse() > 리스트는 뒤집히지만, .reverse() 자체는 None을 반환
    3. result에는 None이 들어가고 그 이후부터 오류 발생
  • 방안 1) sorted(..., reverse=True) 사용
  • 방안 2) 두 단계 처리
    • result = sorted(order)
    • result.reverse()

코드 개선점

  • sorted(s)는 문자열을 '하나의 덩어리'가 아닌 문자 하나하나로 분리해서 정렬
    • 따로 분리하는 코드 넣을 필요 없음
    • sorted("Zbcdefg") 의 결과: ['Z', 'b', 'c', 'd', 'e', 'f', 'g']

⭐.reverse() 와 sorted(문자열) 기억해두기!!