< 문제 >
< 입출력 >
< 풀이 >
모든 경우를 확인하기 위해서 시작 인덱스와 끝인덱스를 설정해서, 시작 인덱스부터 끝 인덱스까지의 문자열이 P문자열에 있을 경우 끝 인덱스를 늘려주고, 더이상 문자열이 같지 않다면 결과값(copy의 횟수)을 하나 올려준 후, 시작 인덱스의 위치를 끝 인덱스 다음의 위치로 배치해주었다.
이전에 풀었던 그리디 문제와 비슷해서 이러한 흐름으로 문제를 푸는 것은 어렵지 않았으나, 구현하는 부분에서 애를 먹었다.
< 코드 >
s = input()
p = input()
result = 0
start, end = 0,0 #시작 인덱스와 끝 인덱스 초기화
while True:
if start == len(p): #p 문자열 탐색이 끝난 경우
break
for i in range(len(s)-(end-start)): #가능한 모든 경우 체크를 위해 i설정
if s[i:i+end-start+1] == p[start:end+1]: # 같은 문자열이 있다면
end += 1
break
else: #동일한 문자열이 없다면, 시작 인덱스를 끝 인덱스 뒤로 배치
result += 1
end -= 1
start = end + 1
end = start
print(result)
'코딩 테스트 > 그리디' 카테고리의 다른 글
[백준 1080번] 행렬 문제 풀이 (1) | 2023.11.19 |
---|---|
[백준 19598번] 배 문제 풀이 (0) | 2023.11.04 |
[백준 13164번] 행복 유치원 문제 풀이 (1) | 2023.11.04 |
[백준 11000번] 강의실 배정 문제 풀이 (with Python) (0) | 2023.11.04 |
[백준 2212번] 센서 문제 풀이 (0) | 2023.09.25 |
댓글