<aside>
💬 lv1
, 자료 구조
주어진 문자열에서 각 알파벳이 출현한 빈도를 계산하고, 가장 많이 출현한 알파벳부터 순서대로 문자열로 반환하는 함수를 작성하세요. 만약 두 알파벳의 출현 빈도가 동일하다면, 알파벳 순으로 정렬하여 문자열에 포함시킵니다. 모든 문자열은 소문자로만 주어지며, 알파벳만 고려합니다.
입력 | 출력 |
---|---|
"aabbccdd" | "abcd" |
"banana" | "anb" |
"mississippi" | "ismp" |
"frequency" | "enfqrucy" |
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 결과 반환**
빈도수 계산
알파벳의 출현 빈도를 저장할 딕셔너리 frequency
를 생성합니다. 그 후, 주어진 문자열을 순회하며 isalpha
함수를 통해 문자가 알파벳인지 확인합니다. 알파벳이라면 해당 알파벳이 딕셔너리에 존재하는지 확인 후 존재한다면 빈도수를 1 증가시킵니다. 존재하지 않는다면 빈도수를 1로 초기화합니다.
정렬
itmes
함수를 사용해 알바펫과 빈도수를 튜플로 반환합니다. 그 후, sorted
함수를 사용하여 빈도수를 기준으로 내림차순으로 정렬합니다.
결과 반환
정렬된 튜플을 순회하면서 각 알파벳을 result에 추가합니다. 그 후, join
함수를 사용하여 문자열로 반환합니다.
isalpha
기본 형태: isalpha()
개념: 문자열이 알파벳으로만 구성되어 있는지를 확인하는 함수입니다.
# 문자열이 알파벳으로만 구성되어 있는지 확인
str1 = "Hello"
str2 = "12345"
str3 = "Hello123"
print(str1.isalpha()) # 출력: True
print(str2.isalpha()) # 출력: False
print(str3.isalpha()) # 출력: False
get
기본 형태: get()
개념: 딕셔너리에서 주어진 키에 대한 값을 반환하는 함수입니다.
# 딕셔너리 생성
my_dict = {"apple": 5, "banana": 3, "orange": 7}
# get() 함수를 사용하여 값 가져오기
print(my_dict.get("apple", 0)) # 출력: 5
print(my_dict.get("grape", 0)) # 출력: 0
items
기본 형태: items()
개념: 딕셔너리의 모든 항목을 (키, 값)의 튜플 형태로 반환하는 메서드입니다.
# 딕셔너리 생성
my_dict = {"apple": 5, "banana": 3, "orange": 7}
# items() 함수를 사용하여 모든 키-값 쌍 가져오기
items = my_dict.items()
# 결과 출력
print(items) # 출력: dict_items([('apple', 5), ('banana', 3), ('orange', 7)])