본문 바로가기

프로그래밍 언어/Python

[Hackerrank] 18. Find a String

18. Find a String

[ 난이도: Easy | 분야: Strings ]

1. 과제

과제 설명

이번 챌린지에서는, 사용자가 문자열과 하위문자열을 입력한다.

이 챌린지에서 하위문자열이 문자열 안에 얼마나 있는지 수를 세야 한다.

문자열을 탐색하는 것은 왼쪽에서 오른쪽으로 진행한다.(오른쪽에서 왼쪽으로 진행하는 것이 아님에 유의해라)

메모: 문자열 문자는 대소를 구분합니다.

 

입력 형식

입력의 첫 번째 줄은 원래 문자열을 포함하고 있다.

그 다음줄은 하위문자열을 포함하고 있다.

 

제약 사항

문자열의 길이는 1보다 크거나 같고 200보다 작거나 같다.

문자열 안의 각 문자들은 아스키문자다.

 

출력 형식

출력으로 보내는 정수는 하위문자열의 원래 문자열에 얼마나 겹쳐있는지 경우의 수를 나타낸다.

 

입력 예시

ABCDCDC
CDC

 

출력 예시

2

 

컨셉

몇몇 문자열 처리하는 예시는 매우 유용하다.

몇몇 컨셉들을 여기에서 소개하고자 한다:

파이썬에서, 문자열의 길이는 len(s)라는 함수를 통해 알 수 있다.(여기서 s는 문자열이다.)
문자열을 훝기 위해 문자열의 길이와 for 문을 활용한다:

for i in range(0, len(s)):
	print(s[i])

range 함수는 특정 길이만큼 반복하는데 사용한다:

range(0, 5)

여기서, 0~4 범위만 반복하고 5는 제외된다.

 

문제

def count_substring(string, sub_string):
    return

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

정답

def count_substring(string, sub_string):
    result = 0
    len_string = len(string)
    len_sub = len(sub_string)
    for i in range(len_string - len_sub + 1):
        isSame = False
        for j in range(len_sub):
            if(string[i+j]==sub_string[j]):
                isSame = True
            else:
                isSame = False
            if(isSame == False):
                break
        if(isSame):
            result += 1
    return result

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

 

 

 

 

 

ⓒ Hackerrank. All Rights Reserved.

'프로그래밍 언어 > Python' 카테고리의 다른 글

[Hackerrank] 19. String Validators  (0) 2024.03.11
[Hackerrank] 17. Mutations  (0) 2024.03.08
[Hackerrank] 16. What's Your Name?  (0) 2024.03.07
[Hackerrank] 15. String Split and Join  (0) 2024.03.07
[Hackerrank] 14. sWAP cASE  (0) 2024.03.06