강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

작성자 없음

작성자 정보가 삭제된 글입니다.

38군데 합격 비법, 2025 코딩테스트 필수 알고리즘

1-7. 공간 복잡도 판단하기

1-7. 4:30 에서 N*N이 아닌이유가 뭔가요?

해결된 질문

작성

·

134

0

1-7. 4:30 에서 N*N이 아닌이유가 뭔가요? 갑자기 26을 상수취급하는 이유를 모르겠어요.. 1-6에서는 N*N이었던 것 같은데요...

 

1. 현재 학습 진도

  • 몇 챕터/몇 강을 수강 중이신가요?

  • 어떤 알고리즘을 학습하고 계신가요?

  • 여기까지 이해하신 내용은 무엇인가요?

 

2. 어려움을 겪는 부분

  • 어느 부분에서 막히셨나요?

  • 코드의 어떤 로직이 이해가 안 되시나요?

  • 어떤 개념이 헷갈리시나요?

 

3. 시도해보신 내용

  • 문제 해결을 위해 어떤 시도를 해보셨나요?

  • 에러가 발생했다면 어떤 에러인가요?

  • 현재 작성하신 코드를 공유해주세요

 

이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다! 😊

답변 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이 아니군요 빠른답변 감사해요

딩코딩코님의 프로필 이미지
딩코딩코
지식공유자

넵 정확합니다!! ㅎㅎ 좋은 하루 보내세요!!

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기