해결된 질문
작성
·
22
·
수정됨
0
1-5 6강
최빈값찾기
최빈 문자를 찾는 것
이런 코드는 어떨지 궁금합니다!
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
문제 해결을 위해 어떤 시도를 해보았는데 답이 다르다면 이런식으로 여기에 올려 첨삭을 받는 형식일까요?
또 궁금한 것이 왜 string에 겹치는 최빈값이 문자열이 많은데 정답은 i, e, b인지 궁금합니다.
o, l, t 일수도 있지 않나요?
밑의 질문 내용에서 답을 얻었습니다! 복수정답으로 이해했습니다!
감사합니다!
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다. ybt124님.
질문하신 코드에서는 문자열에서 가장 많이 나타나는 문자를 찾고 있습니다. 현재 작성하신 코드에 대한 피드백과 함께 몇 가지 관련된 설명을 드리겠습니다.
빈도 계산:
mem
딕셔너리를 사용하여 각 알파벳의 빈도를 저장하는 방식입니다. 이는 파이썬 collections.Counter
클래스를 사용하면 좀 더 간단하게 작성할 수 있습니다.최대값 찾기:
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
문제 상황에 따라 최빈값이 여러 개인 경우 기본적으로 사전순으로 가장 앞에 있는 알파벳을 반환하는 방식이 많이 사용됩니다. 이 부분에 대한 명확한 조건이 주어지지 않을 경우, 코드의 구현 방식에 따라 결과가 달라질 수 있습니다.
최빈값과 관련된 기존 질문에 대한 답변도 참고하시면, 더욱 다양한 접근법을 공부하실 수 있을 것입니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.