코딩 테스트/프로그래머스

[Python] 프로그래머스 문자열 여러 번 뒤집기

위시리 2024. 10. 9. 23:52

 

문제 분석

  • 문자열 my_string & 이차원 정수 배열 queries
  • queries = [s,e] 형태
  • my_string 의 인덱스 s부터 인덱스 e까지 뒤집으라는 의미
  • 최종 문자열 return

 

코드 설계

  • queries 만큼 반복하면서 배열을 빼고
  • s, e에 저장
  • 그 배열안에 들어있는 값의 인덱스만큼 문자열을 빼서
  • 뒤집고
  • 다시 그 배열 안에 넣기
  • 바뀐 문자열이 다음 반복문에서도 적용되어야 함

 

정답 코드

실패

def solution(my_string, queries):
    str = list(my_string)
    global answer
    for arr in queries:
        s = arr[0]
        e = arr[1]

        answer = str[0:s]
        rev = str[s:e+1]
        rev.reverse()
        answer += rev
        answer += str[e:]
        str = answer
    return answer
 
 
다른 사람 코드  1
def solution(my_string, queries):
    for start, end in queries:
        my_string = my_string[:start] + my_string[start:end+1][::-1] + my_string[end+1:]
    return my_string
  • 파이썬 [::-1] : 모든 숫자를 1만큼 역순으로 바꾼다.

 

다른 사람 코드 2

def solution(my_string, queries):
    ans = list(my_string)
    for s,e in queries :
        ans[s:e+1] = ans[s:e+1][::-1]
    return ''.join(ans)