SCC Algorithm 1주차 HW(추가문제)

nathan·2021년 3월 7일
0

SCC Algorithm

목록 보기
4/7

Homework ++

  1. 입력으로 소문자의 알파벳 순으로 정렬된 문자열이 입력됩니다.
  2. 각 알파벳은 중복이 가능합니다.
  3. 중간에 없는 알파벳이 있을 수도 있습니다.
    (입,출력 예시와 같이 입력 문자열에 나타나는 각 알파벳의 종류,갯수를 요약하여 나타내시오.)
# 문제의 번호별 조건에 대한 입력 예시와 출력
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을 만들었다.

  • 내 답이 틀렸다고 생각하지는 않으나, 앞으로는 문제를 잘 읽고 그에 맞게 코드를 짜는 연습을 해야겠다.

profile
나는 날마다 모든 면에서 점점 더 나아지고 있다.

0개의 댓글