[알고리즘] 문자열 내림차순으로 배치하기

유동헌·2021년 9월 14일
0

1일1알고리즘

목록 보기
7/12

링크

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

풀이

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

코드 설명

def solution(s):
    
    data = sorted(s, reverse=True)
    
    return ''.join(data)
  • 간단한 방법으로 풀긴 했지만 sorted 함수가 문자열까지 정렬해준다는 사실은 몰랐다. 그렇기 때문에 이것 저것 다양한 메서드를 사용하다가 얼떨결에 풀었다는 표현이 맞겠다

    https://min-zero.tistory.com/entry/python-문자열-내림차순으로-배치하기연습문제

    sorted로 정렬이 되는 이유는 이 블로그를 보고 참고하였다.

    testing_str = "Zbcdefg"
    
    print(sorted(testing_str))
    
    # 출력
    # ['Z', 'b', 'c', 'd', 'e', 'f', 'g']

    출력 값은 위와 같이 나오고, 이걸 reverse=True 해주면 요구하는 정답과 일치한다.

  • 문자열의 아스키 코드를 살펴보니 대문자가 소문자보다 작다는 걸 알 수 있었다. 그래서 거꾸로 돌려주면 답이 나온다. 아스키 코드에 대한 근본적인 이해는 많이 부족하지만, 앞서 풀어본 문제들에서 아스키 코드 값으로 비교하는 경우가 많았었다.

문제를 풀며 참고했었던, 흥미로운 다른 분들의 풀이

출처 : 프로그래머스 다른 풀이

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

def solution(s):
    upper_list = []
    lower_list = []
    for word in list(s):
        upper_list.append(word) if word.isupper() else lower_list.append(word)
    upper_list.sort(reverse=True)
    lower_list.sort(reverse=True)
    answer = ''.join(lower_list + upper_list)
    return answer
  • 알파뱃을 나누고 대문자, 소문자를 따로 저장하고 거꾸로 해준 다음에 합치는 코드. 잘 푸신 거 같아서 따로 공부해 보았다.
profile
지뢰찾기 개발자

0개의 댓글