[문자열][programmers] 문자열 내림차순으로 배치하기

Tieck

·

2021. 10. 5. 14:40

문제

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

 

https://programmers.co.kr/learn/courses/30/lessons/12917

 

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

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

programmers.co.kr

 


 

이해

 

입력

  • s : str은 길이 1 이상인 문자열

 

출력

  • 문자를 큰것부터 작은 순으로 정렬된 문자열

 

조건

  • 대문자는 소문자보다 작은 것으로 간주

 

예시

s return
"Zbcdefg" "gfedcbZ"

 

접근

정렬된 문자열을 반환하는 sorted()이용

 

 

구현


try #1

def solution(s):
    answer = ''
    
    answer = sorted(s)
    return answer

  • 반환된 문자를 list로 묶어 문자열로 반환하자.

 


try #2

def solution(s):
    answer = ''
    
    answer = list(sorted(s))
    return answer

  • 흠...
  • <파이썬 알고리즘 인터뷰>에서 배운 "".join()을 이용하자.

 


 

try #3

def solution(s):
    answer = ''
    
    answer = "".join(sorted(s))
    return answer

 

  • idea 1. 문자열 슬라이싱으로 뒤집기
  • idea 2. sorted()의 파라미터를 이용하여 내림차순으로 정렬 (deafult : 오름차순)

 


 

try #4 , idea1  문자열 슬라이싱으로 뒤집기

채점 결과

정확성: 100.0

합계: 100.0 / 100.0

def solution(s):
    answer = ''
    
    answer = "".join(sorted(s))[::-1]
    return answer

 

 


 

try #5 , idea2  sorted()의 파라미터를 이용하여 내림차순으로 정렬

채점 결과

정확성: 100.0

합계: 100.0 / 100.0

def solution(s):
    answer = ''
    
    answer = "".join(sorted(s,reverse = True))
    return answer

 

(좌) try4, idea1 / (우) try5, idea2

 

  • idea1과 idea2 모두 통과했다.
  • 사용된 메모리의 양과 시간 역시 둘 모두 비슷하다
  • idea1의 경우 하지만 테스트 케이스 5번에서 오래(0.14ms)걸리는 경우가 존재한다.
  • idea2 역시 테스트 5번에서 0.08ms 비교적 오래 걸린다.
  • 두 코드의 두드러진 차이는 존재하지 않는다.

 

 

 

 


코드 리뷰

 

익명 외 1055명

def solution(s):
    return ''.join(sorted(s, reverse=True))

대부분 나와 같은 방식으로 풀었다.

 

 

Reference

https://programmers.co.kr/learn/courses/30/lessons/12917/solution_groups?language=python3&type=all 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr