소소하게 깨달은 점:
역시 사람은 잠을 자야 뇌가 돈다
1. 문자열 요약해보기 문제
먼저 어떻게 문제를 풀어야 할지 구상하고 그림을 그렸다.(기획과정)
나만의 코드로 알고리즘을 완성했다.
이후 답안을 보고, 나의 코드와 비교하며 어떤 점이 다른지, 어떻게 개선할 수 있는지 분석한다.
분석을 토대로 나의 코드를 개선한다.
def alphabet_counter(string):
alphabet_count_array = [0]*26
for alphabet in string:
if not alphabet.isalpha():
continue
alphabet_count_array[ord(alphabet)-ord('a')] += 1
exist_alphabet_list = []
for i in range(len(alphabet_count_array)):
if alphabet_count_array[i] == 0:
continue
exist_alphabet_list.append(chr(i+ord('a')) + str(alphabet_count_array[i]))
alphabet_count_load = ""
for exist_alphabet in exist_alphabet_list:
if exist_alphabet == exist_alphabet_list[-1]:
alphabet_count_load += exist_alphabet
continue
alphabet_count_load += exist_alphabet + "/"
print(alphabet_count_load)
alphabet_counter("aas ddfffmmm ii")
alphabet_counter("aadd jj iiiii")
풀이과정 1~2:
문제를 본 뒤, 아이디어를 정리하고 나만의 코드로 알고리즘을 구현했다.
def summarize_string(target_string):
n = len(target_string)
count = 0
result_str = ''
for i in range(n - 1):
if target_string[i] == target_string[i + 1]:
count += 1
else:
result_str += target_string[i] + str(count + 1) + '/'
count = 0
result_str += target_string[n - 1] + str(count + 1)
return result_str
풀이과정 3:
답안을 보며 나의 코드와 비교하며 어떤 점이 다른지, 어떻게 개선할 수 있는지 분석했다.
풀이과정 4:
개선점 분석을 토대로 나의 코드를 수정했다.
def alphabet_counter(string):
alphabet_count_array = [0]*26
for alphabet in string:
if not alphabet.isalpha():
continue
alphabet_count_array[ord(alphabet)-ord('a')] += 1
alphabet_count_load = ""
for i in range(len(alphabet_count_array)):
if alphabet_count_array[i] == 0:
continue
alphabet_count_load += (chr(i + ord('a')) + str(alphabet_count_array[i]) + '/')
return alphabet_count_load[:-1].rstrip()
아주 훌륭합니다