inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

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

알파벳 빈도수 세기 정답

해결된 질문

214

maran0119

작성한 질문수 2

0

def find_alphabet_occurrence_array(string):

alphabet_occurrence_array = [0] * 26

for char in string:

if not char.isalpha():

continue

arr_index = ord(char) - ord('a') ->

alphabet_occurrence_array[arr_index] += 1

return alphabet_occurrence_array

print("정답 = [3, 1, 0, 0, 2, 0, 0, 0, 1, 0, 0, 2, 2, 1, 1, 1, 0, 1, 2, 1, 0, 0, 0, 0, 1, 0] \n현재 풀이 값 =", find_alphabet_occurrence_array("Hello my name is sparta"))

print("정답 = [2, 1, 2, 1, 0, 0, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0] \n현재 풀이 값 =", find_alphabet_occurrence_array("Sparta coding club"))

print("정답 = [2, 2, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 3, 3, 0, 0, 0, 0, 0, 0] \n현재 풀이 값 =", find_alphabet_occurrence_array("best of best sparta"))

 

안녕하세요! 1주차 알고리즘과 친해지기 (2) 애서 첫번째 Hello my name is sparta 의 정답이 왜 "정답 = [3, 1, 0, 0, 2, 0, 0, 0, 1, 0, 0, 2, 2, 1, 1, 1, 0, 1, 2, 1, 0, 0, 0, 0, 1, 0] 인가요? [3, 0, 0, 0, 2, 0, 0, 1, 1, 0, 0, 2, 2, 1, 1, 1, 0, 1, 2, 1, 0, 0, 0, 0, 1, 0] 아닌가요?

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

답변 3

0

딩코딩코

안녕하세요 maran님 질문 감사합니다!!

제가 교재 부분에 값을 잘못 넣어둔 것을 확인했습니다!!

 

말씀해주신 코드를 아래와 같이 변경해서 학습 부탁드리겠습니다

잘못된 입력값을 넣어 혼동을 드려 죄송합니다 ;_;

더 좋은 강의를 만들 수 있도록 질문해주셔서 넘넘 감사드립니다!!!

def find_alphabet_occurrence_array(string):
    alphabet_occurrence_array = [0] * 26

    for char in string:
        if not char.isalpha():
            continue
        arr_index = ord(char) - ord('a')
        alphabet_occurrence_array[arr_index] += 1

    return alphabet_occurrence_array


print("정답 = [1, 0, 2, 2, 2, 0, 2, 1, 3, 0, 0, 2, 2, 3, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0] \n현재 풀이 값 =",
      find_alphabet_occurrence_array("hello my name is dingcodingco"))
print("정답 = [1, 0, 0, 0, 2, 0, 1, 1, 1, 0, 0, 2, 1, 0, 2, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0] \n현재 풀이 값 =",
      find_alphabet_occurrence_array("we love algorithm"))
print("정답 = [0, 3, 0, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 3, 2, 0, 0, 0, 1, 0] \n현재 풀이 값 =",
      find_alphabet_occurrence_array("best of best youtube"))

0

maran0119

설명이 좀 이상한거 같습니다. 아무리봐도 "Hello my name is sparta" 에는 b 가 없는데 왜 [3,1,... ] 이 되는지 모르겠네요

0

인프런 AI 인턴

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

알파벳의 빈도수를 세어 해당 배열로 나타내는 코드의 문제에 대해 살펴보겠습니다.

주어진 문자열 "Hello my name is sparta" 에서 각 알파벳의 빈도를 수집하여 배열 형태로 나타내고 있습니다. 각 배열의 인덱스는 알파벳의 ordinal 값을 기준으로 하고 있는데, 여기서 주의할 점은 대문자 ‘H’가 소문자 ‘h’로 변환되어 세어져야 할 경우가 있습니다.

질문 내용에서 [3, 1, 0, 0, 2, 0, 0, 0, 1, 0, 0, 2, 2, 1, 1, 1, 0, 1, 2, 1, 0, 0, 0, 0, 1, 0]가 아닌 [3, 0, 0, 0, 2, 0, 0, 1, 1, 0, 0, 2, 2, 1, 1, 1, 0, 1, 2, 1, 0, 0, 0, 0, 1, 0]이라고 생각하신 점에 대해 의문을 가질 수 있는데요, 여기서 h의 위치가 7이며 H가 등장한 횟수는 1이므로 빈도수 배열에 3이 아닌 1이어야 한다는 점입니다.

기존의 계산하는 방법은 아마도 케이스의 차이를 잘 고려하지 않았을 가능성이 있습니다. 따라서, 문자열에서 대소문자를 변환하여 일관되게 소문자로 계산하거나 대문자로 변환하여 계산해야 할 것입니다.

코드를 수정하여 다음과 같이 적용하는 것을 고려해 보세요:

def find_alphabet_occurrence_array(string):
    alphabet_occurrence_array = [0] * 26

    for char in string.lower():  # 여기서 전부 소문자로 변환합니다.
        if not char.isalpha():
            continue

        arr_index = ord(char) - ord('a')
        alphabet_occurrence_array[arr_index] += 1

    return alphabet_occurrence_array

이 코드로 변경하면 대소문자 구별 없이 알파벳의 빈도를 올바르게 계산할 수 있습니다.

관련된 기존의 답변을 통해 코드를 효율적으로 작성하는 다른 팁도 확인해보시길 권장드립니다. 다음 링크들이 도움이 될 것입니다:

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

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

0

36

1

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

0

30

1

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

0

33

1

LinkedList 과제 Fast, slow 포인터

0

43

1

투포인터 시간복잡도

0

42

1

수강평 작성 후 자료

0

46

2

수업교재 링크 오류

2

103

2

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

0

119

2

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

0

66

2

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

0

80

2

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

0

82

2

수업자료 pdf 받고싶습니다

0

98

2

강의 자료 오류 수정

0

67

1

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

0

58

2

3-8 해쉬 -2

0

45

2

Linked List Element Delete Explanation Problem

0

61

2

강의3-4 스택 탑 문제

0

73

2

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

0

93

3

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

0

71

2

1874 - 스택 문항

0

77

2

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

0

95

2

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

0

103

2

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

1

178

3

들여쓰기가 햇갈리네요

0

117

2