- 입력으로 소문자의 알파벳 순으로 정렬된 문자열이 입력됩니다.
- 각 알파벳은 중복이 가능합니다.
- 중간에 없는 알파벳이 있을 수도 있습니다.
(입,출력 예시와 같이 입력 문자열에 나타나는 각 알파벳의 종류,갯수를 요약하여 나타내시오.)
# 문제의 번호별 조건에 대한 입력 예시와 출력
Ex 1)
abc # a1/b1/c1
Ex 2-1)
aaabbbc # a3/b3/c1
Ex 2-2)
abbbc # a1/b3/c1
Ex 3-1)
ahhhhz # a1/h4/z1
Ex 3-2)
acccdeee # a1/c3/d1/e3
def summarize_string(input_str):
final_string = ''
alphabet_occurrence_array = [0]*26
for char in input_str:
if char.isalpha() is True:
alphabet_occurrence_array[ord(char)-ord('a')] += 1
for index in range(len(alphabet_occurrence_array)):
if alphabet_occurrence_array[index] > 0:
final_string += chr(index+ord('a'))+str(alphabet_occurrence_array[index])+'/'
return final_string[:-1] # python에서 마지막 문자를 제거하는 방법
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
나는 먼저 알파벳 데이터에 해당하는 공간을 리스트 내에 만들었고, 해답은 그렇지 않았다. 이유는 문제에서 알파벳이 알파벳 순으로 정렬되어 문자열이 제공된다고 했기 때문이다. 따라서 해답은 순서대로 문자열 내의 알파벳을 다음 순서의 알파벳과 비교하면서 result_str
을 만들었다.
내 답이 틀렸다고 생각하지는 않으나, 앞으로는 문제를 잘 읽고 그에 맞게 코드를 짜는 연습을 해야겠다.