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

dkw gh님의 프로필 이미지
dkw gh

작성한 질문수

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

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

동일 값 로직 처리

작성

·

31

·

수정됨

0

1. 현재 학습 진도

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

 

2. 어려움을 겪는 부분

# def find_max_occurred_alphabet(string):
#     alphabet = [0] * 26
#     for i in string:
#         if i.isalpha():
#             alphabet[ord(i) - ord('a')] += 1
#
#     max = alphabet[0]
#     index = 0
#     for i in range(len(alphabet)):
#         if alphabet[i] > max:
#             max = alphabet[i]
#             index = i
#
#     return chr(index+ord('a'))


from collections import Counter


def find_max_occurred_alphabet(string):
    string = [char for char in string if char.isalpha()]

    counter = Counter(string)
    print(counter)

    return max(counter, key=counter.get)


result = find_max_occurred_alphabet

print("정답 = i 현재 풀이 값 =", result("hello my name is dingcodingco"))
print("정답 = e 현재 풀이 값 =", result("we love algorithm"))
print("정답 = b 현재 풀이 값 =", result("best of best youtube"))

 

image.png

3. 시도해보신 내용

 안녕하세요. 첨부한 코드 중 주석 처리한 부분은 문제를 보고 사전에 제가 작성한 코드입니다. 결과는 예상과 동일하게 출력됩니다.

그 밑에는 다른 풀이 방법을 찾다가 Counter 클래스를 사용하여 작성한 코드입니다. 본 강의에서는 카운터가 동일한 경우, 기존의 값을 변경하지 않는 방식이라 i가 출력되지만, 해당 방법을 사용하면 입력 순으로 o가 출력됩니다.

이 경우 최빈값을 찾아내는 코드는 맞지만, 값이 동일한 경우에 처리하는 로직이 다르기 때문에 발생한다고 이해하면 될까요?

답변해주신다면 감사하겠습니다.

답변 1

0

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

질문해주신 내용은 최빈값을 찾을 때 동일 값 처리의 차이에 대한 것입니다.

주석 처리된 코드와 Counter 클래스를 활용한 코드는 둘 다 문자열에서 가장 많이 발생하는 문자를 찾는 기능을 수행합니다.

차이점 설명

  1. 직접 구현 방식 (주석 처리 코드):

    • 알파벳 배열을 초기화하고 문자열을 순회하여 각 알파벳의 발생 빈도를 저장합니다.
    • 두 단계로 나누어 최대 빈도 수와 그 값을 찾습니다.
    • 이 코드에서는 동일한 빈도의 값이 존재할 때 가장 먼저 높은 빈도에 도달한 알파벳이 유지됩니다.
  2. Counter 클래스 이용:

    • Counter 객체를 사용해 자동으로 각 문자 빈도를 계산합니다.
    • max(counter, key=counter.get)를 이용하여 가장 빈도가 높은 문자를 반환합니다.
    • 동일한 빈도의 문자가 있을 경우, Counter는 입력 순서대로 저장하기 때문에 입력 순서상 먼저 등장한 문자가 반환됩니다.

이 차이가 발생하는 이유는 Counter 클래스가 동등한 빈도를 가진 문자들 중 처음 등장한 것을 반환하도록 설계되었기 때문입니다. 따라서, 코드를 작성할 때 어떤 상황에서 어느 방식이 더 적합할지를 염두에 두시면 좋습니다.

관련 내용에 대한 기존 질문과 답변은 아래 링크에서 더 찾아보실 수 있습니다:

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

dkw gh님의 프로필 이미지
dkw gh

작성한 질문수

질문하기