inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

1-5. 알고리즘과 친해지기 (2)

1-5. 알고리즘과 친해지기 (2) 맨 마지막 시뮬레이션 관련 문의

해결된 질문

127

김지혜

작성한 질문수 3

0

1. 현재 학습 진도

 

2. 어려움을 겪는 부분

python 코딩-테스트 알고리즘 data-structure

답변 2

1

딩코딩코

안녕하세요 지혜님!!! 좋은 질문 감사합니다!!

시뮬레이션 영상에 대해 질문 주셔도 괜찮습니다!!

아마 아래 코드의 2번째 for 문에 대한 동작 방식인 것 같습니다!

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') # 해당 문자를 인덱스로 치환합니다. a -> 0 , b-> 1
        alphabet_occurrence_array[arr_index] += 1 # 빈도수 배열에 인덱스로 찾아가서 해당 값을 추가해줍니다.

    max_occurrence = 0
    max_alphabet_index = 0

    for index in range(len(alphabet_occurrence_array)): # 0,1...25
        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'))

해당 코드의 2번째 포문에서는 index 를 0부터 25까지 올리면서 max_occurrence 를 탐색하고 있습니다. 그래서 기존 코드의 동작방식은 max_occurrence 가 3인 첫번쨰 인덱스인 8에서 바뀌지 않아야 하는데....

 

시뮬레이션에서는 바뀌고 있습니다!!

맞습니다. 시뮬레이션 영상이 잘못된 것 같습니다!

아마 시뮬레이션 코드 내에서는 다음과 같이 alphabet_occurrence 와 max_occurrence 가 같더라도 변경되는 구조로 작성되어 있어서 ocurrence 값이 3인 것들을 다 넣어주고 있었던 것 같습니다

 

    for index in range(len(alphabet_occurrence_array)): # 0,1...25
        alphabet_occurrence = alphabet_occurrence_array[index]

        if alphabet_occurrence >= max_occurrence:
            max_occurrence = alphabet_occurrence
            max_alphabet_index = index

 

매의 눈으로 시뮬레이션의 다른 알고리즘까지 파악해주시다니!! 감사합니다 ㅎㅎ

코드를 완벽하게 이해해주셔서, 질문해주셔서 감사합니다!! 영상은 조만간 변경해두도록 하겠습니다

감사합니다!!

1

김지혜

감사합니다 쌤~!!!

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 김지혜님.

질문해주신 부분은 최빈값을 구하는 과정에서 동일한 빈도를 가진 문자가 여러 개 있을 때, 어떤 문자가 선택되는지에 대한 의문인 것 같습니다.

코드 동작 이해

  1. 최빈값 찾기 알고리즘:

    • 코드는 알파벳 배열을 순회하면서 각 알파벳의 빈도를 계산합니다.
    • max_occurrencemax_alphabet_index는 발견된 최대 빈도 값과 그 인덱스를 저장합니다.
  2. 등호 처리 방법:

    • if alphabet_occurrence > max_occurrence:라는 조건을 사용하기 때문에, 동일한 빈도가 있는 경우 기존의 max_alphabet_index는 변경되지 않습니다.
    • 이로 인해 같은 빈도를 가지는 문자가 여러 개 있을 때, 배열에서 더 앞선 인덱스의 문자(알파벳 순서가 빠른)가 최종 결과로 반환됩니다.
  3. 시뮬레이션에서의 혼란:

    • 강의 시뮬레이션에서는 변수 max_alphabet_index가 여러 번 바뀌다가 마지막에 ‘o’(14)가 아닌 ‘i’(8)로 끝난 이유는 max_occurrence가 갱신되지 않아서입니다.
    • 동일 빈도를 가진 ‘o’와 ‘i’ 중 코드에서 먼저 발견된 ‘i’가 반환됩니다.

강의 내용에서 코드의 설명은 정확하며, 동일 빈도의 문자를 처리하는 방식에 익숙해지면 좋습니다. 쓰신 것처럼 코드에서 이해하신 대로 넘어가시면 됩니다.

관련된 기존 질문 및 답변을 더 참고하고 싶으시면 다음 링크를 참조하세요:

저는 질문자님의 이해를 돕고자 다양한 질문과 답변을 검토하여 가장 관련성이 높은 정보를 제공하고 있습니다. 베타 기능으로 답변이 부정확할 수 있는 점 양해 부탁드리며, 추가로 궁금한 점이 있으시다면 언제든지 질문해 주세요. 곧 지식공유자께서 정확한 답변을 제공해 주실 것입니다.

코딩테스트 처음인데 이런 공부방법이어도 괜찮을까요

0

53

2

3-3 정렬-2 선택정렬 로직

0

36

2

링크드 리스트 끝에서 k번째 값 출력하기

0

40

2

LinkedList 과제 Fast, slow 포인터

0

48

2

투포인터 시간복잡도

0

49

2

수강평 작성 후 자료

0

49

2

수업교재 링크 오류

2

105

2

프로그래머스에서 제출 후 채점시 틀림ㅠ

0

124

2

1-10 알고리즘 더 풀어보기(2) 질문 있습니다

0

68

2

문제 풀이 방식 관련 질문입니다!

0

80

2

1-5 알고리즘과 친해지기 (2) - 최빈값찾기 질문 있습니다

0

84

2

수업자료 pdf 받고싶습니다

0

102

2

강의 자료 오류 수정

0

69

1

2-10 더하거나 빼거나 관련 질문입니다

0

60

2

3-8 해쉬 -2

0

47

2

Linked List Element Delete Explanation Problem

0

63

2

강의3-4 스택 탑 문제

0

73

2

코드스니펫 입출력 케이스에 오류가 있는것 같아요

0

97

3

링크드 리스트 원소 찾기 구현 방식 질문드립니다.

0

73

2

1874 - 스택 문항

0

79

2

DP Java 예제 자료형 오버플로우 문제

0

96

2

4-9 4주차 숙제중 농심라면 문제

0

105

2

DFS 에서 스택을 사용하는 이유

1

181

3

들여쓰기가 햇갈리네요

0

118

2