본문 바로가기
개발로그/알고리즘

프로그래머스 Lv.0 문자열 여러 번 뒤집기

by 쩜징 2023. 7. 30.

프로그래머스 Lv.0 문자열 여러 번 뒤집기


문제 설명 

문자열 my_string과

이차원 정수 배열 queries가 매개변수로 주어진다.

queries의 원소는 [s,e]형태로,

my_string의 인덱스 s부터 e까지 뒤집으라는 의미다.

my_string에 queries의 명령을

순서대로 처리한 후의 문자열을 return하라.

 

 

my_string은 영소문자로만 이루어져 있다.

1 ≤ my_string의 길이 ≤ 1,000

 0 ≤ s ≤ e < my_string의 길이를 만족한다.

1 ≤ queries의 길이 ≤ 1,000

 

my_string queries result
"rermgorpsam" [[2, 3], [0, 7], [5, 9], [6, 10]] "programmers"

** 풀이 방법

 

queries의 반복문을 돌리고,

my_string의 0번부터 queries[i][0]번-1까지 answer에 합친다.

answer += my_string.substring(0, queries[i][0]);

queries[i][0]번 부터 queries[i][1]번+1까지는 

StringBuilder를 통해 저장을 했다가

reverse() 메서드를 통해 문자열을 뒤집는다.

뒤집은 문자열을 answer에 합친다.

StringBuilder sb = new StringBuilder();
sb.append(my_string.substring(queries[i][0], queries[i][1]+1));
answer += sb.reverse();

나머지 남은 문자열들을 합친다.

answer += my_string.substring(queries[i][1]+1);

반복할 때에 queries의 행이 바뀔 떄마다

my_stirng의 값도 변해 있어야 하고, // my_string = answer;

answer값도 빈 문자열에서 시작을 해야 한다. // answer = "";

 

<> 전체 코드 </>

import java.util.*;
class Solution {
    public String solution(String my_string, int[][] queries) {
        String answer = ""; 
        for (int i=0; i<queries.length; i++) {
            answer="";
            answer += my_string.substring(0,queries[i][0]);
            StringBuilder sb = new StringBuilder();
            sb.append(my_string.substring(queries[i][0], queries[i][1]+1));
            answer += sb.reverse();
            answer += my_string.substring(queries[i][1]+1);

            my_string = answer;
        } 
        return answer;
    }
}

반응형

댓글