[Python] 코드카타 문제 풀이

Dada·2024년 12월 26일

[문제] 문자열 내림차순으로 배치하기
문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요.
s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.

# 정답 코드
def solution(s):
    answer = ''
    s = sorted(list(s), reverse = True)   
    answer = ''.join(s)
    return answer
  • 입력된 문자열 slist()로 형 변환 해준 뒤, sorted() 함수를 사용하여 순서 뒤집기
  • join() 사용하여 리스트 내부의 요소들 문자열 형태로 재정렬

[▶ TIP] sorted() 함수의 문자열 정렬

1. 정렬 기준

  • 유니코드 코드 포인트 순서
    • 각 문자의 유니코드 값에 따라 정렬
    • 유니코드 값은 ord() 함수를 사용하여 확인
  • 대소문자 구분
    • 소문자의 유니코드 값은 대문자보다 큼
    • 따라서 기본 정렬에서는 대문자가 소문자보다 앞에 위치
  • 사전 순서
    • 같은 문자를 여러 개 포함하는 경우, 입력된 문자열에서 나타난 순서를 기준으로 정렬

2. 사용 예제

  • 문자열 정렬
text = "HelloWorld"
sorted_text = sorted(text)
print(sorted_text)  # 출력: ['H', 'W', 'd', 'e', 'l', 'l', 'l', 'o', 'o', 'r']
  • 대소문자 혼합 문자열 정렬
text = "aAbBcC"
sorted_text = sorted(text)
print(sorted_text)  # 출력: ['A', 'B', 'C', 'a', 'b', 'c']
  • 역순 정렬
text = "HelloWorld"
sorted_text = sorted(text, reverse=True)
print(sorted_text)  # 출력: ['r', 'o', 'o', 'l', 'l', 'l', 'e', 'd', 'W', 'H']

3. 정렬 기준 커스터마이징

  • 대소문자를 무시한 정렬
    • key=str.lower를 사용하여 대소문자 구분 없이 정렬
text = "aAbBcC"
sorted_text = ''.join(sorted(text, key=str.lower))
print(sorted_text)  # 출력: aAbBcC
  • 유니코드 역순 정렬
text = "HelloWorld"
sorted_text = ''.join(sorted(text, key=ord, reverse=True))
print(sorted_text)  # 출력: rllloWdHeo

0개의 댓글