[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_string
와 overwrite_string
은 숫자와 알파벳으로 이루어져 있습니다.overwrite_string
의 길이 ≤ my_string
의 길이 ≤ 1,000s
≤ my_string
의 길이 - overwrite_string
의 길이my_string | overwrite_string | s | result |
---|---|---|---|
"He11oWor1d" | "lloWorl" | 2 | "HelloWorld" |
"Program29b8UYP" | "merS123" | 7 | "ProgrammerS123" |
입출력 예 설명
입출력 예 #1
my_string
에서 인덱스 2부터 overwrite_string
의 길이만큼에 해당하는 부분은 "11oWor1"이고 이를 "lloWorl"로 바꾼 "HelloWorld"를 return 합니다.입출력 예 #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하는 코드이다.