Channi Studies

[programmers] 문자열 여러번 뒤집기 (python) 본문

python

[programmers] 문자열 여러번 뒤집기 (python)

Chan Lee 2023. 10. 11. 15:23

문제

 

 

for문 내에서 queires 내의 index들을 반복적으로 my_string에 적용시키면서,

적용된 내용을 다시 my_string에 저장하는 방식으로 하면 될 것 같다. 


코드 및 설명

 

def solution(my_string, queries):
    result = my_string
    for index in queries:
        front_string = result[:index[0]]
        mid_string = result[index[0]: index[1] + 1]
        back_string = result[index[1] + 1:len(result)]
        
        result = front_string + mid_string[::-1] + back_string    
    return result

 

for문 속의 string slicing 내용만 이해하면 쉽게 이해할 수 있을 것 같다.

 

string[a:b]는 (a ~ b-1) 번째 인덱스에 있는 값들을 반환한다.

즉, print("abcde"[1 : 4])

➡️ "abcde"[1] ~ "abcde"[4 - 1 = 3]을 출력하므로, b ~ d 까지의 문자열, 즉 "bcd" 를 출력한다.

 

또한, a == b -1 이라면 string[a]와 똑같은 값을 출력한다.

➡️ "abcde"[1:2] = "abcde"[1] = "b"

 

그렇기 때문에, 문제에서 제공된 문자열을 뒤집어야 할 mid_string을 제외하고 앞 뒤로 나누는데는 위와 같은 코드가 필요하다.

 

 

또한, 문자열을 뒤집기 가장 쉬운 방법은 string[::-1]이다. 

이는 range의 그것과 유사한데, 처음부터 끝까지 문자열을 거꾸로 출력해준다.

 

이 모든걸 활용해서, string을 3개로 나눈 뒤, 중간 부분만 뒤집고, 다시 합치는 방식을 반복한 코드이다.

 

 

더 나은 코드가 있는 걸 알지만, 아직 공부하고 있으니까 이해해주세요~