작성자 없음
작성자 정보가 삭제된 글입니다.
해결된 질문
작성
·
110
0
1-7. 4:30 에서 N*N이 아닌이유가 뭔가요? 갑자기 26을 상수취급하는 이유를 모르겠어요.. 1-6에서는 N*N이었던 것 같은데요...
몇 챕터/몇 강을 수강 중이신가요?
어떤 알고리즘을 학습하고 계신가요?
여기까지 이해하신 내용은 무엇인가요?
어느 부분에서 막히셨나요?
코드의 어떤 로직이 이해가 안 되시나요?
어떤 개념이 헷갈리시나요?
문제 해결을 위해 어떤 시도를 해보셨나요?
에러가 발생했다면 어떤 에러인가요?
현재 작성하신 코드를 공유해주세요
이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다! 😊
답변 1
0
안녕하세요 vlfl0님 좋은 질문 감사합니다!
우선 1-6의 시간 복잡도 먼저 다시 이야기해보겠습니다!
def find_max_num(array):
for number in array:
is_max_num = True
for compare_number in array:
if number < compare_number:
is_max_num = False
if is_max_num:
return number
해당 코드에서 입력값은 array 입니다. 여기에서 array 의 길이를 N 이라고 한다면 for 문을 두번 실행하게 되므로 N^2 의 시간복잡도를 가지게 됩니다.
1-7. 에서 나온 코드는 1-6과는 다른 코드입니다. (1-6: 최댓값찾기 / 1-7: 최빈값 찾기)
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"]
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
find_max_num 에서 array 를 받는 것과는 다르게 alphabet_array의 크기는 정해져있습니다. 딱 알파벳의 길이만큼 정해져있습니다. 바로 26입니다! string 의 길이가 아무리 길더라도, 아무리 짧더라도 관계없이 alphabet_array 의 길이는 26으로 고정되어있기 때문에 상수라고 표현하게 됩니다!
혹시 추가적인 궁금증이 생기시면 편하게 질문 남겨주세요
감사합니다
감사합니다! 알파벳의 갯수가 26으로 고정값이라 N이 아니군요 빠른답변 감사해요