해결된 질문
작성
·
176
0
아래의 코드는 강사님의 최종 작성 코드를 확인 전, 제가 생각해서 작성한 코드입니다.
def find_max_occurred_alphabet(string):
alphabet_occurrence_array = [0] * 26
for char in string:
if char.isalpha():
arr_index = ord(char) - ord('a')
alphabet_occurrence_array[arr_index] += 1
max_num = alphabet_occurrence_array[0]
max_alphabet_index = -1
max_occurred_alphabet = 0
for number in alphabet_occurrence_array:
max_alphabet_index +=1
if max_num < number:
max_num = number
max_occurred_alphabet = max_alphabet_index + ord('a')
return chr(max_occurred_alphabet)
강사님께서 작성하신 코드와 비교해보니, 확실히 강사님께서 작성하신 코드가 더 심플해보였습니다.
1-6 강의를 듣고 확인해보니, 시간복잡도 측면에서는 강사님께서 작성주신 코드와 차이가 없음을 확인하였습니다.
제 구현 방식에 대해 앞으로 코드를 작성 시, 어떻게 풀이 방향을 잡고 구현을 해야하는지, 현재 코드에서의 개선점에 대해 피드백 주시면 감사드리겠습니다.
답변 1
0
안녕하세요 하얀곰님!!
적극적인 자세 너무 좋습니다!!
그런데 코드 형식에 따라 인덴트가 현재 파악할수가 없는 상황이라, 코드 블록을 이용해서 다시 코드 부분 공유가 가능하실까요?
안녕하세요 하얀곰님!
우선 제가 봤을 때 사실 큰 문제는 없어보이는 코드입니다!
변수 선언도 의미를 담아서 잘 해주셨고, 코드 자체의 흐름도 크게 다르지 않다고 생각합니다.
정말 세세한 코드 피드백의 관점에서만 몇가지 드리자면 다음과 같습니다!
max_alphabet_index = -1 보다는 0으로 초기화를 시키는게 더 좋을 것 같습니다. 인덱스의 값을 -1부터 시작한다는 것보다 0으로 시작해서 첫번째 원소부터 탐색해나간다는 것이 더 인지하기 수월할 것 같습니다.
max_occurred_alphabet 는 0으로 초기화되고 있는데, 이는 사실 처음봤을 때 인지하기 힘듭니다. 알파벳인데 0이 초기값으로 들어가네?! 이 점이 처음 코드를 해석할 때 이해하기 어려울 수 있습니다. 따라서 해당 변수를 아예 사용하지 않고 max_alphabet_index만 쓰다가 마지막에 변환해보시는 건 어떨까 싶습니다