문제 설명
문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.
s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.
제한 사항
str은 길이 1 이상인 문자열입니다.
입출력 예
s | return |
Zbcdefg | gfedcbZ |
다른 사람의 풀이를 보니 내가 작성한 코드는 정말 복잡하고 길다는 생각이 들었다.
짧게 풀 수 있도록 고쳐보기!
def solution(s):
# 문자열 안에 있는 문자들 정렬하기 위해 문자 하나씩 리스트에 넣어줌
alist = list()
for i in s:
alist.append(i)
# 문자들 정렬( 대문자가 들어있다면 대문자는 현재 앞쪽에 있는 상태)
alist = sorted(alist)
# 대문자 찾은 후 새로운 리스트에 삽입
Alist = list() # 대문자 담을 리스트
aalist = list() # 소문자들 새로 담을 리스트
for i in alist:
# 대문자 발견하면 대문자리스트에 삽입
if(i in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'):
Alist.append(i)
# 대문자가 아닐 경우 새로운 소문자 리스트에 삽입
else:
aalist.append(i)
# 대,소문자 리스트 내림차순 정렬
Alist.sort(reverse=True)
aalist.sort(reverse=True)
# 소문자만 들어있게 된 리스트에 대문자리스트를 뒤에 더해줌
for i in Alist:
aalist.append(i)
# 리스트를 문자열로 출력
answer = ''
for i in range((len(aalist))):
answer += aalist[i]
return answer
'프로그래머스' 카테고리의 다른 글
[프로그래머스][1단계][python] 서울에서 김서방 찾기 문제 (0) | 2023.03.30 |
---|---|
[프로그래머스][1단계][python] 문자열 다루기 기본 문제 (0) | 2023.03.30 |
[프로그래머스][1단계][python] 문자열 내 마음대로 정렬하기 문제 (0) | 2023.03.29 |
[프로그래머스][1단계][python] 두 정수 사이의 합 문제 (0) | 2023.03.29 |
[프로그래머스][1단계][python] 나누어 떨어지는 숫자 배열 문제 (0) | 2023.03.29 |