<aside> 💬 lv1, 자료 구조

알파벳 출현 빈도 정렬

문제 설명

주어진 문자열에서 각 알파벳이 출현한 빈도를 계산하고, 가장 많이 출현한 알파벳부터 순서대로 문자열로 반환하는 함수를 작성하세요. 만약 두 알파벳의 출현 빈도가 동일하다면, 알파벳 순으로 정렬하여 문자열에 포함시킵니다. 모든 문자열은 소문자로만 주어지며, 알파벳만 고려합니다.


제한 사항


입출력 예

입력 출력
"aabbccdd" "abcd"
"banana" "anb"
"mississippi" "ismp"
"frequency" "enfqrucy"

입출력 설명

😺 풀이 1. isalpha

def solution(s):
    frequency = {}
    for char in s: **#1 빈도수 계산**
        if char.isalpha(): 
            frequency[char] = frequency.get(char, 0) + 1
    **#2 정렬**
    sorted_alphabets = sorted(frequency.items(), key=lambda x: (-x[1], x[0]))

    result = "".join([char for char, _ in sorted_alphabets])
    return result **#3 결과 반환**

단계별 풀이 전략

  1. 빈도수 계산

    알파벳의 출현 빈도를 저장할 딕셔너리 frequency를 생성합니다. 그 후, 주어진 문자열을 순회하며 isalpha함수를 통해 문자가 알파벳인지 확인합니다. 알파벳이라면 해당 알파벳이 딕셔너리에 존재하는지 확인 후 존재한다면 빈도수를 1 증가시킵니다. 존재하지 않는다면 빈도수를 1로 초기화합니다.

  2. 정렬

    itmes함수를 사용해 알바펫과 빈도수를 튜플로 반환합니다. 그 후, sorted함수를 사용하여 빈도수를 기준으로 내림차순으로 정렬합니다.

  3. 결과 반환

    정렬된 튜플을 순회하면서 각 알파벳을 result에 추가합니다. 그 후, join함수를 사용하여 문자열로 반환합니다.

알아둬야 할 개념

isalpha


get


items