해결된 질문
작성
·
173
2
현재 1-5 알고리즘과 친해지기 강의 중 가장 많은 알파벳 출력하는 문제를 풀고 있습니다.
강사님께서 말씀해주신 부분은 가장 많이 사용된 알파벳을 찾는 함수를 구현하는 것인데
강사님께서 예제로 주신 string 값들이 모두 하나 이상의 최댓값을 가지고 있습니다.
print("정답 = i 현재 풀이 값 =", result("hello my name is dingcodingco"))
print("정답 = e 현재 풀이 값 =", result("we love algorithm"))
print("정답 = b 현재 풀이 값 =", result("best of best youtube"))
현재 풀이 값 = o,n,i
현재 풀이 값 = e,l,o
현재 풀이 값 = b,e,t
강사님께서는 가장 많이 사용된 알파벳 중 제일 앞에 있는 알파벳을 출력하신 것 같습니다.
제가 1-6강을 아직 들어보지 않아서 이 부분에 대한 설명을 나중에 해주시는지 확인해 보지 않았지만 , 아무 설명도 없이 이렇게만 넘어간다면 저와 같이 헷갈리시는 분들이 많을 것 같아 질문 드립니다 🙂
답변 1
0
안녕하세요 수빈님!! 좋은 질문 감사드립니다!!
수빈님의 관점에서 또 너무 좋은 내용을 공유해주신 것 같습니다!!
해당 코드에서 발생하는 혼란스러운 부분에 대해 제 기준에서 정리해보면 다음과 같습니다.
반복되지 않는 첫 번째 알파벳을 찾는 문제에서, '첫 번째'라는 기준이 모호합니다. 이는 두 가지 관점에서 해석될 수 있기 때문입니다:
알파벳 순서상 첫 번째 (a -> b -> c -> d ...)
입력된 문자열에서의 등장 순서상 첫 번째
예를 들어 "abadabac" 문자열에서:
반복되지 않는 문자는 'c'와 'd'입니다
알파벳 순서로는 'c'가 'd'보다 먼저입니다
문자열 등장 순서로는 'd'가 'c'보다 먼저 나옵니다
현재 구현된 코드는 알파벳 순서를 기준으로 동작하도록 되어 있습니다. 이는 not_repeating_character_array
를 만들 때 알파벳 순서대로 검사하기 때문입니다.
두 가지 접근 방식 모두 유효한 해결책이 될 수 있으며, 문제의 요구사항에 따라 선택하면 됩니다. 다만 이런 경우에는 어떤 기준을 사용했는지 주석이나 문서에 명확히 명시해주는 것이 좋습니다.
따라서 해당 내용에 대해서는 문서를 기준으로 추가적으로 작성해두도록 하겠습니다
강의가 더 자세해질 수 있도록 좋은 질문해주셔서 넘넘 감사드립니다!!
안녕하세요 수빈님! 상세한 설명 감사드립니다
말씀해주신 아래 추가 서술 내용 문제의 질문 부분에 추가해두겠습니다 감사드립니다!!
(단 최빈값을 가진 알파벳이 여러개일 경우 알파벳 순서가 가장 앞에 위치한 알파벳을 출력하시오)
그런데 find_max_occurred_alphabet
함수는 5. 알고리즘과 친해지기 (2) 에서 구현하고 있어서 그 쪽에 위치하는 게 맞을 것 같은데 아닐까요?_?
반영 감사합니다 🙂
첫번째로 반복되지 않는 문자의 기준이 뭐에요?
는 반복되지 않는 문자와 관련된 내용이라고 생각했는데 find_max_occurred_alphabet
함수에서는 사실 첫번째로 반복되지 않는 문자랑은 크게 관련이 없고,
10. 알고리즘 더 풀어보기 (2)에서 나오는
Q. 다음과 같이 영어로 되어 있는 문자열이 있을 때, 이 문자열에서 반복되지 않는 첫번째 문자를 반환하시오. 만약 그런 문자가 없다면 _ 를 반환하시오.
이 문제와 관련성이 크다고 생각하여 말씀드린 것이었습니다!
사실 큰 의미가 있는 부분은 아니어서 굳이 변경하지 않아도 차이는 없을 것 같습니다 🙂
신경써주셔서 감사합니다~!!
앗 그렇네요!!!!!!
ㅋㅋㅋㅋㅋㅋ아니 제가 뭐가 씌였나 봅니다
수빈님 : 1-5 질문
저 : 1-10 대답 & 1-5에 추가 내용 작성
했네요 ㅋㅋㅋㅋㅋ
올바르게 수정해두겠습니다 에고 감사드립니다!!
피드백 주심에 대한 감사의 의미로 커피 기프티콘을 드리겠습니다 아래 카카오톡 오픈 링크로 연락 부탁드립니다!!
https://open.kakao.com/me/ding_coding_co
감사합니다
강사님 안녕하세요 🙂
답변 감사합니다
제가 문의드린 부분은 '최빈값 찾기' find_max_occurred_alphabet 함수에 대해 문의드린 것이었습니다!
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') alphabet_occurrence_array[arr_index] += 1 max_occurrence = 0 max_alphabet_index = 0 for index in range(len(alphabet_occurrence_array)): 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'))
위 함수에 관하여 전달되는 인자 값들이 아래와 같았습니다.
print("정답 = i 현재 풀이 값 =", result("hello my name is dingcodingco")) print("정답 = e 현재 풀이 값 =", result("we love algorithm")) print("정답 = b 현재 풀이 값 =", result("best of best youtube"))
위의 인자값에서는 최빈값의 알파벳이 각 print마다 1개 이상이었습니다 🙂 그런데 위 함수는 알파벳 순서상 가장 앞에 위치한 최빈값을 출력하고 있습니다.
그래서 어? 최빈값이 여러개인데 왜 한개만 출력되지? 라는 생각이 드는 문제여서 처음 문제에서 조건이 제시되면 어떨까 제안드려 봅니다
다음과 같은 문자열을 입력받았을 때, 어떤 알파벳이 가장 많이 포함되어 있는지 반환하시오
라는 문제에서
=> 다음과 같은 문자열을 입력받았을 때, 어떤 알파벳이 가장 많이 포함되어 있는지 반환하시오 (단 최빈값을 가진 알파벳이 여러개일 경우 알파벳 순서가 가장 앞에 위치한 알파벳을 출력하시오)
라는 추가 설명이 있으면 어떨까 싶습니다 🙂
혹시 제가 잘못 이해하고 있는 부분이 있다면 설명 부탁드립니다 감사합니다
+ ) 또한 강사님께서 추가해주신
첫번째로 반복되지 않는 문자의 기준이 뭐에요?
자료도 확인해보았습니다. 빠른 피드백 감사합니다.
' 첫번째로 반복되지 않는 문자' 에 관련된 내용은 5. 알고리즘과 친해지기 (2) 가 아닌 10. 알고리즘 더 풀어보기(2) 와 관련이 있는 내용인 것 같아서 말씀드립니다. 자료 위치를 변경하면 좋을 것 같습니다.
항상 친절한 답변 감사드립니다.