728x90
문제설명
https://school.programmers.co.kr/learn/courses/30/lessons/181913
정답 코드
def solution(my_string, queries):
for s, e in queries:
my_string = my_string[:s] + my_string[s:e+1][::-1] + my_string[e+1:]
return my_string
처음에는 반복문을 사용해 풀어야할 것 같아서 반복문으로 풀어보았는데 잘 되지 않았다.
그래서 인덱스 슬라이싱 하는 방법을 사용했다.
뒤집고자 하는 부분은 아래와 같은데,
my_string[s:e+1][::-1]
# 문자열을 뒤집고자 하는 부분이다.
만약 우리가 다음과 같은 코드를 쓴다면,,, 안된다!!
my_string[e:s-1:-1]
왜냐하면 예를들어, [0, 1, 2, 3, 4, 5]라는 리스트가 있을 때
바꾸고자 하는 인덱스가 1~4일 때 (e:4, s:1)
[4,3,2,1] 과 같이 정상적으로 나오기는 한다.
그러나, 만약 s가 0일 때는 's-1'의 값이 -1이 되므로, 값을 뱉어낼 수가 없다.
그래서, 뒤집고자 하는 부분을 먼저 뽑아낸 후[s:e+1], 뒤집는 과정을 진행한다. [::-1]
즉, 위의 예시라면 [1, 2, 3, 4] 리스트를 뽑아내고 [::-1]을 통해 [4, 3, 2, 1]로 바꾼다는 의미이다.
은근 복잡했던 문제였다.
끄읏-!
728x90
'코딩테스트 > PYTHON' 카테고리의 다른 글
[프로그래머스][PYTHON] Lv. 1 최소직사각형 (1) | 2024.01.26 |
---|---|
[프로그래머스][PYTHON] Lv. 0 세로 읽기 (0) | 2024.01.23 |
[프로그래머스][PYTHON] Lv. 0 배열 만들기 2 (1) | 2023.12.28 |
[프로그래머스][PYTHON] Lv. 0 수열과 구간 쿼리 4 (0) | 2023.12.27 |
[프로그래머스][PYTHON] Lv. 0 수열과 구간 쿼리 2 (0) | 2023.12.27 |