프로그래머스/Lv. 0(코딩 기초 트레이닝)

[프로그래머스 코딩테스트] 문자열 여러 번 뒤집기(Java)

Sigfriede 2023. 6. 28. 01:00

  문제 설명

  문자열 my_string과 이차원 정수 배열 queries가 매개변수로 주어집니다.

  queries의 원소는 [s, e] 형태로, my_string의 인덱스 s부터 인덱스 e까지를 뒤집으라는 의미입니다. my_string에 queries의 명령을 순서대로 처리한 후의 문자열을 return 하는 solution 함수를 작성해 주세요.

 

  제한사항

  • my_string은 영소문자로만 이루어져 있습니다.
  • 1 <= my_string의 길이 <= 1,000
  • queries의 원소는 [s, e]의 형태로 0 <= s <= e < my_string의 길이를 만족합니다.
  • 1 <= queries의 길이 <= 1,000

 

  입출력 예

my_string queries result
"rermgorpsam" [[2, 3], [0, 7], [5, 9], [6, 10]] "programmers"
import java.lang.StringBuilder;
class Solution {
    public String solution(String my_string, int[][] queries) {
        StringBuilder sb = new StringBuilder(my_string);
        for (int i = 0; i < queries.length; i++) {
            int start = queries[i][0];
            int end = queries[i][1];
            String substring = sb.substring(start, end + 1);
            StringBuilder reversedSubstring = new StringBuilder(substring).reverse();
            sb.replace(start, end + 1, reversedSubstring.toString());
        }
        String answer = sb.toString();
        return answer;
    }
}

  StringBuilder를 생성합니다.

  for문이 queries의 길이만큼 순회합니다.

  변수 start와 end를 생성합니다. 각각 queries에서 뒤집을 부분의 시작과 끝을 담습니다.

  substring 메소드를 이용하여 start부터 end + 1까지 문자열을 자릅니다. substring 메소드는 종료 지점을 포함하지 않으므로 1을 더해준 것입니다.

  다시 StringBuilder를 생성하여 substring에서 자른 문자열을 reverse 메소드를 이용하여 뒤집어줍니다.

  replace 메소드를 이용하여 start부터 end까지의 부분 문자열를 reversedSubstring로 변경합니다.

  answer에 toString 메소드를 이용하여 sb를 올바른 문자열로 반환할 수 있도록 합니다.