인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

작성자 없음

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

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

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

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

해결된 질문

작성

·

110

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으로 고정되어있기 때문에 상수라고 표현하게 됩니다!

 

혹시 추가적인 궁금증이 생기시면 편하게 질문 남겨주세요

감사합니다

vlfl0님의 프로필 이미지

감사합니다! 알파벳의 갯수가 26으로 고정값이라 N이 아니군요 빠른답변 감사해요

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

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

작성자 없음

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

질문하기