프로그래머스, 문자열 여러 번 뒤집기(Java)

이도현·2023년 10월 27일
0

알고리즘 문제풀이

목록 보기
17/24

0. 문제

1) 문제설명

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

2) 제한사항

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

1. 문제풀이

1) 코드

class Solution {
    public String solution(String my_string, int[][] queries) {
        String answer = "";
        
        StringBuilder sb = new StringBuilder(my_string);
        
        for(int i = 0; i < queries.length; i++){
            int s = queries[i][0];
            int e = queries[i][1];
            
            String reversedPart = new StringBuilder(sb.substring(s, e+1)).reverse().toString();
            
            sb.replace(s, e+1, reversedPart);
            
        }
        return sb.toString();
    }
}

2) String, StringBuilder/StringBuilder 차이

  • String: immutable(불변)이다.
  • StringBuilder/StringBuffer: Mutable이다.

3) StrigBuilder 사용하는 이유

  • 가변적이기 때문에 문자열을 변경하거나 추가할 대 새로운 객체를 생성하지 않고 기존 객체를 변경할 수 있다. 그러므로 String보다 효율적

4) StringBuilder 메서드 설명

  • substring(s, e+1): s부터 e까지의 문자열을 반환
  • reverse(): 문자열 순서를 뒤집는다.
  • toString(): 객체를 일반 String 객체로 변환, 대부분의 메소드와 함수는 일반 'String'형식의 데이터를 사용하므로 최종결과를 String으로 변환하는 것이 필요
  • sb.replace(s, e+1, partStr): sb의 s부터 b까지의 문자를 partStr로 교체
profile
좋은 지식 나누어요

0개의 댓글