
문제
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 ❗ (헷갈리지 말기!!)
- sorted(order) > 새로운 리스트를 반환
- sorted(order).reverse() > 리스트는 뒤집히지만, .reverse() 자체는 None을 반환
- 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(문자열) 기억해두기!!
'코딩 테스트 연습 > [프로그래머스] Python' 카테고리의 다른 글
| [LV.2] 연습문제 > 문자열 다루기 기본 (0) | 2025.06.23 |
|---|---|
| [LV.2] 위클리 챌린지 > 부족한 금액 계산하기 (0) | 2025.06.20 |
| [LV.2] 월간 코드 챌린지 시즌2 > 약수의 개수와 덧셈 (0) | 2025.06.18 |
| [LV.2] 내적 (0) | 2025.06.17 |
| [LV.2] 문자열 반복 (0) | 2025.06.16 |