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

윤인경·2023년 7월 30일
0

코딩테스트

목록 보기
12/38
post-thumbnail

문제 풀이에 사용한 개념

인덱싱

[a : b] -> a 부터 b-1 까지 인덱싱
[ : b] -> 처음부터(0부터) b-1 까지 인덱싱
[a : ] -> a부터 끝(len()-1)까지 인덱싱
[a : b : c] -> a 부터 b-1 까지 c 간격으로 인덱싱

문제 설명

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

제한사항

  • my_stringoverwrite_string은 숫자와 알파벳으로 이루어져 있습니다.
  • 1 ≤ overwrite_string의 길이 ≤ my_string의 길이 ≤ 1,000
  • 0 ≤ smy_string의 길이 - overwrite_string의 길이

입출력 예

my_stringoverwrite_stringsresult
"He11oWor1d""lloWorl"2"HelloWorld"
"Program29b8UYP""merS123"7"ProgrammerS123"

입출력 예 설명
입출력 예 #1

  • 예제 1번의 my_string에서 인덱스 2부터 overwrite_string의 길이만큼에 해당하는 부분은 "11oWor1"이고 이를 "lloWorl"로 바꾼 "HelloWorld"를 return 합니다.

입출력 예 #2

  • 예제 2번의 my_string에서 인덱스 7부터 overwrite_string의 길이만큼에 해당하는 부분은 "29b8UYP"이고 이를 "merS123"로 바꾼 "ProgrammerS123"를 return 합니다.

내가 작성한 코드

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

코드 간단 소개

  • my_string[:s]으로 0~ s-1 까지 인덱싱한다.
  • overwrite_string을 추가한다.
  • overwrite_string을 추가한 것보다 my_string이 더 길면 my_string[s+len(overwrite_string):]로 s+len(overwrite_string) ~ 끝 까지 인덱싱한다.

틀렸었던 코드

def solution(my_string, overwrite_string, s):
    for i in range(s, s + len(overwrite_string)):
        my_string[i] = overwrite_string[i-s]
    answer = my_string
    return answer

TypeError: 'str' object does not support item assignment 오류 메시지를 보며 틀렸다.
python에서 문자열을 인덱싱으로 변경할 수 없다.
이렇게 쓰고 싶으면 리스트로 변환하여 사용해야한다고 한다.

다른 사람 풀이

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

list로 변경하여 인덱싱으로 변경하고 다시 문자열로 join하는 코드이다.

profile
코딩 공부 및 프로젝트 정리

0개의 댓글