출처: https://school.programmers.co.kr/learn/courses/30/lessons/181905?language=python3
문제 설명
문자열 my_string과 정수 s, e가 매개변수로 주어질 때, my_string에서 인덱스 s부터 인덱스 e까지를 뒤집은 문자열을 return 하는 solution 함수를 작성해 주세요.
제한사항
my_string은 숫자와 알파벳으로만 이루어져 있습니다.
1 ≤ my_string의 길이 ≤ 1,000
0 ≤ s ≤ e < my_string의 길이
입출력 예
my_string s e result
"Progra21Sremm3" 6 12 "ProgrammerS123"
"Stanley1yelnatS" 4 10 "Stanley1yelnatS"
입출력 예 설명
입출력 예 #1
예제 1번의 my_string에서 인덱스 6부터 인덱스 12까지를 뒤집은 문자열은 "ProgrammerS123"이므로 "ProgrammerS123"를 return 합니다.
입출력 예 #2
예제 2번의 my_string에서 인덱스 4부터 인덱스 10까지를 뒤집으면 원래 문자열과 같은 "Stanley1yelnatS"이므로 "Stanley1yelnatS"를 return 합니다.
내가 작성한 코드문
def solution(my_string, s, e):
answer = ''
reverse_str = ""
reverse_str = list(my_string[s:e+1])
reverse_str.reverse() # 리스트로 변환해야 reverse() 사용 가능
reverse_str = "".join(reverse_str) # 뒤집힌 '리스트'를 다시 '하나의 문자열'로 합치기
return my_string[0:s] + reverse_str + my_string[e+1:]
전반적으로 파이썬 문자열 함수에 대해 익숙하지 않다.
트러블 슈팅
자바처럼 반복문 돌필요없이 리스트에
문자열 s인덱스부터 e인덱스까지 담고
리스트 형태여야만 reverse함수를 쓸수 있다는것.
그리고 뒤집힌 리스트를 다시 하나의 문자열로 합치기
다른 사람의 풀이
def solution(my_string, s, e):
return my_string[:s]+my_string[s:e+1][::-1]+my_string[e+1:]
def solution(my_string, s, e):
substr = reversed(list(my_string[s:e+1]))
return my_string[:s] + ''.join(substr) + my_string[e+1:]
def solution(my_string, s, e):
answer=my_string[:s]
for i in range(e,s-1,-1):
answer+=my_string[i]
answer+=my_string[e+1:]
return answer