Wacky_Life

 

코딩테스트 연습 - 문자열 내림차순으로 배치하기

문자열 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)

1
2
3
4
def solution(s):
    ls = list(s)
    ls.sort(reverse = True)
    return "".join(ls)
cs

 

sorted가 아닌 sort를 사용하여 답을 만든 코드이다.

 

 

다른 코드(2)

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]을 통해 역순으로 배치한다.

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading