출처: https://meyouus.tistory.com/64 [정보 공유 - For Me For You For Us]
본문으로 바로가기

 

간단한 문제인 것 같았으나, 내가 푼 방식은 조금 어렵게 푼 듯한 느낌이 들기는 한다:

def count_substring(string, sub_string):
    sub_string_list = []
    i = 0
    for i in range(len(string)-len(sub_string)+1):
        sub_string_list.append(string[i:len(sub_string)+i])
        i += 1
    return sub_string_list.count(sub_string)

if __name__ == '__main__':
    string = input().strip()
    sub_string = input().strip()
    
    count = count_substring(string, sub_string)
    print(count)

우선, sub_string_list라는 빈 리스트를 만들고, i라는 변수에 0이라는 값을 저장한다. 그리고 이제 for문을 돌려주는데, 횟수는 len(string) - len(sub_string) + 1 만큼 해준다. 이는 이제 sub_string의 개수 만큼 string에서 불러오기 위함인데, 예를 들어 string = 'ABCDCDC' 이고 sub_string = 'CDC'이라면, 'ABC', 'BCD', 'CDC', 'DCD', 'CDC', 이렇게 3개의 문자로 이루어진 문자열을 저장해주기 위함이다.

또한, sub_string_list에 이러한 문자열들을 append 해주고, i+=1을 통해 'ABC', 다음인 'BCD', 이런 식으로 넘어갈 수 있게끔 하고, 마지막으로는 sub_stringsub_string_list에 몇개 들어있는지 확인하기 위해 count를 사용한다.