참고: https://www.acmicpc.net/problem/1543
✔️ 문제
문제는 다음과 같다.
✔️ 풀이
예제를 보면 쉽게 이해가 가는데,
ababababa 라는 문자열과 aba 라는 단어가 주어지면
(aba)b(aba)ba 앞에서부터 잘랐을 때 총 2번 단어가 등장하게 된다.
(문제에서 볼 수 있듯이 중복되지 않게 등장한다고 한다.)
문제의 의도에 맞게 슬라이싱을 진행하면서 횟수를 세게 되면,
s = input()
word = input()
cnt, l = 0, len(word)
while len(s) >= l:
temp = s[0:l]
if (temp == word):
cnt += 1
s = s[l:]
else: s = s[1:]
print(cnt)
다음과 같이 반복문을 돌면서 첫번째부터 단어의 길이만큼을
슬라이싱하여 단어와 슬라이싱한 값이 같으면 횟수를 증가시키고
나머지를 다시 슬라이싱하는 과정을 거칠 수 있다.
이것을 간단하게 파이썬 내장함수를 사용해 구현할 수 있는데,
s = input()
word = input()
print(s.count(word))
count는 함수 안에 담아준 인자가 해당 문자열에 몇 개가 들어있는지
counting 해주는 기능을 갖고 있기 때문에 이렇게 간단하게 풀 수 있다.
화이팅 💪
'알고리즘(algo) > 백준' 카테고리의 다른 글
[백준] 1676번 - 팩토리얼 0의 개수 (0) | 2023.03.18 |
---|---|
[백준] 1743번 - 음식물 피하기 (0) | 2023.03.16 |
[백준] 11656번 - 접미사 배열 (0) | 2023.03.14 |
[백준] 1026번 - 보물 (0) | 2023.03.12 |
[백준] 5567번 - 결혼식 (0) | 2023.03.11 |