본문 바로가기
코딩 테스트/그리디

[백준 2195번] 문자열 복사 문제 풀이

by 서영선 2023. 9. 24.

 

 

< 문제 >

 

 

 

< 입출력 >

 

 

 

 

< 풀이 >

모든 경우를 확인하기 위해서 시작 인덱스와 끝인덱스를 설정해서, 시작 인덱스부터 끝 인덱스까지의 문자열이 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)

 

 

 

댓글