최댓값 찾기
첫 번째 방법
각 숫자마다 모든 다른 숫자와 비교해서 최댓값인지 확인한다.
만약 다른 모든 값 보다 크다면 반복문 중단한다.
이중 for문을 이용해서 구현
input = [3, 5, 6, 1, 2, 4]
def find_max_num(array):
for num in array:
for compare_num in array:
if num < compare_num:
break
else:
return num
print("정답 = 6 / 현재 풀이 값 = ", find_max_num([3, 5, 6, 1, 2, 4]))
print("정답 = 6 / 현재 풀이 값 = ", find_max_num([6, 6, 6]))
print("정답 = 1888 / 현재 풀이 값 = ", find_max_num([6, 9, 2, 7, 1888]))
# for 문에서 break가 발생하지 않았을 경우 else 사용한다
두 번째 방법
최댓값을 저장할 변수를 만들고 배열을 돌아가면서 그 변수와 비교한다.
값이 더 크다면 그 변수에 대입한다.
input = [3, 5, 6, 1, 2, 4]
def find_max_num(array):
max_num = array[0]
for num in array:
if num > max_num:
max_num = num
return max_num
print("정답 = 6 / 현재 풀이 값 = ", find_max_num([3, 5, 6, 1, 2, 4]))
print("정답 = 6 / 현재 풀이 값 = ", find_max_num([6, 6, 6]))
print("정답 = 1888 / 현재 풀이 값 = ", find_max_num([6, 9, 2, 7, 1888]))
최빈값 찾기
최빈값을 찾기 위해 각 알파벳의 빈도수를 먼저 찾아주자
def find_max_occurred_alphabet(string):
# 이 부분을 채워보세요!
return "a"
result = find_max_occurred_alphabet(input)
print("정답 = a 현재 풀이 값 =", result("Hello my name is sparta"))
print("정답 = a 현재 풀이 값 =", result("Sparta coding club"))
print("정답 = s 현재 풀이 값 =", result("best of best sparta"))
alphabet 별 빈도수를 저장하기 위한 길이가 26인 0으로 초기화 된 배열을 만들어주자
def find_max_occurred_alphabet(string):
alphabet_occurrence_array = [0] * 26
그리고 for 문으로 한글자씩 돌려줄건데
이때 알파벳인지 아닌지 확인해줘야한다.
내장함수 str.isalpha()를 사용하자!
def find_max_occurred_alphabet(string):
alphabet_occurrence_array = [0] * 26
for char in string:
if char.isalpha() == True:
거짓이면 넘겨주고 참이면 알파벳에 맞는 인덱스 값을 찾아서 1을 더해줘야하는데
그 값은 ord()를 이용해서 알파벳을 아스키코드로 바꿔주고, ord('a')의 값을 빼주면
해당 알파벳의 index 값이 나온다!
그 값을 1 더해주자
def find_max_occurred_alphabet(string):
alphabet_occurrence_array = [0] * 26
for char in string:
if char.isalpha() == True:
arr_index = ord(char)-ord('a')
alphabet_occurrence_array[arr_index] += 1
else:
continue
return alphabet_occurrence_array
print(find_max_occurred_alphabet("hello my name is sparta"))
이렇게 되면 알파벳별로 빈도수를 리스트에 저장하기 끝!
이제 최빈값을 구해줘보자
def find_max_occurred_alphabet(string):
alphabet_occurrence_array = [0] * 26
for char in string:
if char.isalpha() == True:
arr_index = ord(char)-ord('a')
alphabet_occurrence_array[arr_index] += 1
else:
continue
max_num = alphabet_occurrence_array[0]
for num in alphabet_occurrence_array:
if num > max_num:
max_num = num
a = chr(alphabet_occurrence_array.index(max_num)+97)
return a
result = find_max_occurred_alphabet
print("정답 = a 현재 풀이 값 =", result("Hello my name is sparta"))
print("정답 = a 현재 풀이 값 =", result("Sparta coding club"))
print("정답 = s 현재 풀이 값 =", result("best of best sparta"))
나는 이렇게 했는데
강의에서는 어떻게 했는지 비교하면서 보자!
첫 번째 방법
def find_max_occurred_alphabet(string):
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"]
# a 랑 문자열이랑 전부 비교해주기 위함
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
print("정답 = a 현재 풀이 값 =", result("Hello my name is sparta"))
print("정답 = a 현재 풀이 값 =", result("Sparta coding club"))
print("정답 = s 현재 풀이 값 =", result("best of best sparta"))
두 번째 방법
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_index + ord('a'))
result = find_max_occurred_alphabet
print("정답 = a 현재 풀이 값 =", result("Hello my name is sparta"))
print("정답 = a 현재 풀이 값 =", result("Sparta coding club"))
print("정답 = s 현재 풀이 값 =", result("best of best sparta"))
728x90
'알고리즘 > 자료구조와 알고리즘' 카테고리의 다른 글
2주차_링크드 리스트 구현 (0) | 2022.09.19 |
---|---|
2주차_어레이, 링크드리스트, 클래스 (0) | 2022.09.19 |
1주차_알고리즘 더 풀어보기 (0) | 2022.09.17 |
1주차_시간 복잡도, 공간 복잡도, 점근표기법 (0) | 2022.09.17 |
댓글