간단한 문제인 것 같았으나, 내가 푼 방식은 조금 어렵게 푼 듯한 느낌이 들기는 한다:
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_string이 sub_string_list에 몇개 들어있는지 확인하기 위해 count를 사용한다.
'알고리즘 테스트 > Hackerrank 문제풀이 및 해설' 카테고리의 다른 글
<Hackerrank 문제풀이: 파이썬> What's Your Name? (0) | 2020.11.18 |
---|---|
<Hackerrank 문제풀이: 파이썬> Mutations (0) | 2020.11.18 |
<Hackerrank 문제풀이: 파이썬> String Split and Join (0) | 2020.11.17 |
<Hackerrank 문제풀이: 파이썬> sWAP cASE (0) | 2020.11.17 |
<Hackerrank 문제풀이: 파이썬> Tuples (0) | 2020.11.16 |