코딩테스트 연습 - 문자열 내림차순으로 배치하기
문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요. s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 �
programmers.co.kr
문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.
s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.
str은 길이 1 이상인 문자열입니다.
s | return |
"Zbcdefg" | "gfedcbZ" |
1
2
|
def solution(s):
return (''.join(sorted(s,reverse=True)))
|
cs |
입력 받은 문자열 s를 sorted함수와 reverse 설정으로 역순으로 정렬한다. 그리고 join함수를 통해 리스트를 특정 구분자(' ' 사이)를 포함해 문자열로 변환해 주는 함수를 사용하여 리턴한다.
간단하게 sort와 sorted를 알아보자면
list.sort() / string.sort() |
sorted(list) / sorted(string) |
원본을 직접 정렬 |
원본에 영향을 끼치지 않음 |
None을 반환함 |
정렬한 새로운 문자열 혹은 list를 반환함 |
1
2
3
4
|
def solution(s):
ls = list(s)
ls.sort(reverse = True)
return "".join(ls)
|
cs |
sorted가 아닌 sort를 사용하여 답을 만든 코드이다.
1
2
3
4
5
6
7
|
def solution(s):
uppers = [l for l in s if ord(l) >= 65 and ord(l) <= 90]
lowers = [l for l in s if ord(l) >= 97 and ord(l) <= 122]
a = ''.join(lowers[::-1])
b = ''.join(uppers[::-1])
return a+b
|
cs |
2번째 줄 : 대문자를 구별하기 위해 문자의 아스키 코드 값을 돌려주는 함수인 ord 함수를 사용한다. 65는 'A', 90은 'Z'를 나타낸다.
3번째 줄 : 소문자를 구별한다. 기능적으로는 2번째 줄과 동일하며 97은 'a', 122는 'z'를 나타낸다.
5,6 번째 줄 : 문자열로 변환해주는 join함수를 사용하고 [::-1]을 통해 역순으로 배치한다.
[프로그래머스/Level1/파이썬3] 문자열 내 p와 y의 개수 (0) | 2020.10.12 |
---|---|
[프로그래머스/Level1/파이썬3] 문자열 다루기 기본 (0) | 2020.10.09 |
[프로그래머스/Level1/파이썬3] 2016 (0) | 2020.10.08 |
[프로그래머스/Level1/파이썬3] 두 개 뽑아서 더하기 (0) | 2020.10.07 |
[프로그래머스/Level1/파이썬3] 두 정수 사이의 합 (0) | 2020.10.07 |