알고리즘이란?
어떠한 문제를 해결하는 방법들의 집합 ➡️ 그중 적은 공간을 이용해서 빠른 속도로 수행할 수 있도록 만드는 것
그런 프로그램을 만들기 위해서는 경우에 따라 특정 자료구조나 접근방법을 사용해야한다.
문제2. 최빈값 찾기
def find_alphabet_occurrence_array(string):
alphabet_occurrence_array = [0] * 26
for char in string:
if not char.isalpha():
continue
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"))
1. 알파벳의 개수가 26개이다. 최대빈도수를 구하기 위해 26개의 빈 리스트를 작성해주자.
alphabet_occurrence_array = [0] * 26
2. 공백은 알파벳이 아니므로, 넘기고 공백다음알파벳을 구할 수 있도록 작성해주자.
if not char.isalpha():
continue
3. 아스키코드의 알파벳 소문자를 보면 a1=97, d=1인 공차수열이므로 다음과 같이 작성하면 구현해둔 리스트에 각 빈도가 업데이트된다.
arr_index = ord(char) - ord('a')
alphabet_occurrence_array[arr_index] += 1
답안1
input = "hello my name is sparta"
def find_max_occurred_alphabet(string):
#전체개요 -> 전체 문장을 계속 돌면서 a부터 몇번 나왔는지 체크, b 몇번 나왔는지 체크 -> a는 몇번나왔고.. b는.. -> a가 제일많이 나왔네!
alphabet_array = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s",
"t", "u", "v", "x", "y", "z"]
max_occurrence = 0
#최고로 많이 나온 횟수를 저장하기위한 변수
max_alphabet = alphabet_array[0]
#최고로 많이 나온 알파벳을 저장하기 위한 변수
for alphabet in alphabet_array:
occurrence = 0
for char in string:
if char == alphabet:
occurrence += 1
if occurrence > max_occurrence:
max_alphabet = alphabet
max_occurrence = occurrence
return max_alphabet
result = find_max_occurred_alphabet(input)
print(result)
답안2
def find_max_occurred_alphabet(string):
alphabet_occurrence_array = [0] * 26
for char in string:
if not char.isalpha():
continue
arr_index = ord(char) - ord('a')
alphabet_occurrence_array[arr_index] += 1
max_occurrence = 0
#가장 많이 발생한 횟수를 저장할 변수
max_alphabet_index = 0
#가장 많이 등장한 알파벳을 저장할 변수
for index in range(len(alphabet_occurrence_array)):
alphabet_occurrence = alphabet_occurrence_array[index]
if alphabet_occurrence > max_occurrence:
max_occurrence = alphabet_occurrence
max_alphabet_index = index
return chr(max_alphabet_indes + ord("a"))
'내일배움캠프[4기_Reac트랙] > TIL' 카테고리의 다른 글
내일배움캠프 React트랙 2주차 회고 (2022.11.13) (1) | 2022.11.13 |
---|---|
내일배움캠프 React트랙 10일차 회고 (2022.11.11) (0) | 2022.11.13 |
내일배움캠프 React트랙 1주차 회고 (2022.11.06) (1) | 2022.11.06 |
내일배움캠프 React트랙 5일차 회고 (2022.11.04) (0) | 2022.11.04 |
내일배움캠프 React트랙 4일차 회고 (2022.11.03) (0) | 2022.11.04 |