알파벳 빈도수 세기
본문 바로가기
항해 중/알고 보면 알기 쉬운 알고리즘

알파벳 빈도수 세기

by 은돌1113 2021. 11. 12.

알고리즘과 친해지기 2 - 알파벳 빈도수 세기
: 문자열을 입력 받았을 때 어떤 알파벳이 가장 많이 포함되어 있는 지 반환한다.

-> 문자인 지 확인하는 방법
: 파이썬의 내장 함수 str.isalpha()를 이용하면 해당 문자열이 알파벳인 지 확인 할 수 있다.

-> 알파벳 별로 빈도수를 리스트에 저장하기
: 우선 알파벳 빈도수를 저장하기 위한 길이가 26인 0으로 초기화된 배열을 만든다.


-> 아스키 코드를 사용해서 문자를 숫자로 변환 하거나 숫자를 문자로 변환 할 수 있다.

문자를 아스키 코드로 변환 할 때는 "python char to ascii code"라고 검색을 해보면 ord 함수를 사용하라고 나온다.


1) 의사코드(수도코드)

- 알파벳의 빈도 수를 담은 배열

alphabet_occurrence_array = [0] * 26

- 문자인 지 아닌 지 구별하는 함수 => str.isalpha()를 사용해서 문자이면 true를 반환, 문자가 아니면 false를 반환
- 문자를 숫자(아스키 코드)로 변환하는 함수 => ord("문자")
- 해당 문자의 index 위치를 찾아서 1씩 더한다. => ord('a') - ord('a')를 하면 0이라는 index 값이 나온다.

2) 코드 구현

def find_alphabet_occurrence_array(string):

    # 알파벳의 빈도 수를 담을 배열
    alphabet_occurrence_array = [0] * 26

    # 문자인 지 아닌 지 구별하는 함수 -> str.isalpha()
    # 문자를 숫자(아스키 코드)로 변환하는 함수 -> ord(str)
    # 해당 문자의 index 위치를 찾아서 1씩 더한다.
    for str in string:
        if str.isalpha():
            alphabet_occurrence_array[ord(str)-ord('a')] += 1

    return alphabet_occurrence_array

print(find_alphabet_occurrence_array("hello my name is sparta"))


선생님의 풀이 방법

def find_alphabet_occurrence_array(string):

    # 알파벳의 빈도 수를 담을 배열
    alphabet_occurrence_array = [0] * 26

    for char in string:
        if not char.isalpha(): # 문자가 아니라면
            continue # 반복문을 건너뛴다.
        else: # 문자라면
            arr_index = ord(char) - ord('a')
            alphabet_occurrence_array[arr_index] += 1

    return alphabet_occurrence_array

print(find_alphabet_occurrence_array("hello my name is sparta"))

'항해 중 > 알고 보면 알기 쉬운 알고리즘' 카테고리의 다른 글

공간 복잡도 판단하기  (0) 2021.11.12
시간 복잡도 판단하기  (0) 2021.11.12
최빈값 찾기  (0) 2021.11.12
최댓값 찾기  (0) 2021.11.12
알고리즘이란?  (0) 2021.11.12

댓글