본문 바로가기

Algorithm/프로그래머스

[Python] [코딩 기초 트레이닝] / 문자열 겹쳐쓰기

[Q]

1. input 은 my_string, overwrite_string, s

2. my_string의 인덱스 s 부터 overwrite_string의 길이만큼을 문자열 overwrite_string으로 바꾼 문자열 구하기

3. 0 <= s <= len(my_string) - len(overwirte_string)

def solution(my_string, overwrite_string, s):
    answer = ''
    return answer

 

 

- my_string[:s] + overwrite_string[:len(overwrite_string)]

 

 

[A] (내가 쓴 답)

def solution(my_string, overwrite_string, s):
    
    if len(my_string) > s + len(overwrite_string) :
        answer = my_string[:s] + overwrite_string[:len(overwrite_string)+1] + my_string[len(overwrite_string)+2:]
    else :
        answer = my_string[:s] + overwrite_string[:len(overwrite_string)+1]
        
    return answer

-> 테스트 통과했는데 채점에서 실패함

- 뭐가 틀렸는지 고민해보니 +2가 왜 들어가게 되었을까 = 앞에 두글자 같이 빼려고

- + my_string[s+len(overwrite_string):] : +2가 아닌 +s

 

(수정한 답)

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

 

 

[A] 다른 답들

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

 

 * len(my_string) < s+len(overwirte_string) 고려 안 해줘도 되는듯

 

def solution(my_string, overwrite_string, s):
    answer = ''
    k = 0
    for i in range(len(my_string)):
        if i >= s and i < s+len(overwrite_string):
            answer += overwrite_string[k]
            k += 1
        else: answer += my_string[i]
    return answer