[프로그래머스] 문자열 겹쳐쓰기

2024. 9. 2. 08:17PYTHON

문제 

문자열 my_stringoverwrite_string과 정수 s가 주어집니다. 문자열 my_string의 인덱스 s부터 overwrite_string의 길이만큼을 문자열 overwrite_string으로 바꾼 문자열을 return 하는 solution 함수를 작성해 주세요.

 

제한사항

my_string와 overwrite_string은 숫자와 알파벳으로 이루어져 있습니다.

1 ≤ overwrite_string의 길이 ≤ my_string의 길이 ≤ 1,000

0 ≤ s ≤ my_string의 길이 - overwrite_string의 길이

 

my_stringoverwrite_stringsresult

 

my_string :  "He11oWor1d"

overwrite_string : "lloWorl"

s : 2

result : "HelloWorld"

 

 

my_string : "Program29b8UYP"

overwrite_string : "merS123"

s : 7 

result : "ProgrammerS123"

 

def solution(my_string, overwrite_string, s):
    answer = my_string.replace(my_string[s:s+len(overwrite_string)], overwrite_string)
    return answer

 

 

오답의 원인

replace 함수를 사용하면 my_string 안에서 my_string[s:s+len(overwrite_string)]와 같은 모든 부분 문자열을 바꾸게 된다. 예를 들어, my_string에 동일한 부분 문자열이 여러 번 나타날 경우 예상치 못한 결과가 나올 수 있다.

 

정답

def solution(my_string, overwrite_string, s):
    answer = my_string[:s] + overwrite_string + my_string[s+len(overwrite_string):]
    return answer

 

여기서는 my_string을 시작점부터 s번째 문자, overwrite_string  + overwrite_string이후 부터 끝까지로 3등분하여 처리하여 정답을 얻어낸다.