inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

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

1-5 알고리즘과 친해지기 (2) - 최빈값찾기

해결된 질문

77

ybt124

작성한 질문수 1

0

1. 현재 학습 진도

 

2. 어려움을 겪는 부분

def find_max_occurred_alphabet(string):
    mem = {}
    max_v = 0
    max_k = ''
    for s in string:
        if s.isalpha():
            if s not in mem:
                mem[s] = 1
            else:
                mem[s] += 1
    for k, v in mem.items():
        if max_v < v:
            max_v = v
            max_k = k
    return max_k

 

3. 시도해보신 내용

 

감사합니다!

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

답변 2

0

딩코딩코

오오오오 ybt124 님!! 멋집니다 ㅎㅎㅎ 자문자답을 통해서 답을 찾아내시다니!!

언제든 편하게 질문해주세요 감사합니다!!

0

인프런 AI 인턴

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

질문하신 코드에서는 문자열에서 가장 많이 나타나는 문자를 찾고 있습니다. 현재 작성하신 코드에 대한 피드백과 함께 몇 가지 관련된 설명을 드리겠습니다.

코드 설명 및 개선점

  1. 빈도 계산:

    • mem 딕셔너리를 사용하여 각 알파벳의 빈도를 저장하는 방식입니다. 이는 파이썬 collections.Counter 클래스를 사용하면 좀 더 간단하게 작성할 수 있습니다.
    • 현재 구조에서는 반복문을 두 번 사용하여 첫 번째에서 빈도를 계산하고, 두 번째에서 최대치를 찾는데, 이는 한 번의 반복으로 해결할 수도 있습니다.
  2. 최대값 찾기:

    • 첫 번째 반복에서 바로 최대값을 갱신하는 구조로 변경하면 한 단계의 반복만으로 문제를 해결할 수 있습니다.
    • 대소문자를 구분하지 않는다면 s.lower()를 활용하여 모든 문자를 소문자로 변환한 후 처리할 수도 있습니다.

아래는 개선된 코드 예시입니다:

def find_max_occurred_alphabet(string):
    mem = {}
    max_v = 0
    max_k = ''
    for s in string:
        if s.isalpha():
            s = s.lower()  # 대소문자 구분이 필요 없다면 사용
            mem[s] = mem.get(s, 0) + 1
            if mem[s] > max_v:
                max_v = mem[s]
                max_k = s
    return max_k

최빈값이 여러 개인 경우

문제 상황에 따라 최빈값이 여러 개인 경우 기본적으로 사전순으로 가장 앞에 있는 알파벳을 반환하는 방식이 많이 사용됩니다. 이 부분에 대한 명확한 조건이 주어지지 않을 경우, 코드의 구현 방식에 따라 결과가 달라질 수 있습니다.

참고할 기존 질문 및 답변

최빈값과 관련된 기존 질문에 대한 답변도 참고하시면, 더욱 다양한 접근법을 공부하실 수 있을 것입니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

수강평 이벤트

0

34

2

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

0

70

2

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

0

43

2

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

0

46

2

LinkedList 과제 Fast, slow 포인터

0

50

2

투포인터 시간복잡도

0

53

2

수강평 작성 후 자료

0

53

2

수업교재 링크 오류

2

114

2

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

0

133

2

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

0

76

2

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

0

88

2

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

0

94

2

수업자료 pdf 받고싶습니다

0

108

2

강의 자료 오류 수정

0

75

1

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

0

63

2

3-8 해쉬 -2

0

49

2

Linked List Element Delete Explanation Problem

0

69

2

강의3-4 스택 탑 문제

0

74

2

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

0

100

3

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

0

76

2

1874 - 스택 문항

0

81

2

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

0

100

2

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

0

111

2

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

1

187

3