8일차 - 문자열 여러 번 뒤집기

wsung·2025년 11월 19일

5. 문자열 여러 번 뒤집기

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

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];
            
            while (start < end) {
                char temp = sb.charAt(start);
                sb.setCharAt(start, sb.charAt(end));
                sb.setCharAt(end, temp);
                
                start++;
                end--;
            }
        }
        
        return sb.toString();
    }
}
  • 기본적으로 자바의 String은 불변 : 한 번 만들어지면 내용을 바꿀 수 없음
    -> "abc" + "d" → 새로운 문자열 "abcd"가 생성됨 → 문자열이 길거나 반복 작업 많으면 비효율

  • StringBuilder는 가변 문자열 : 내부 배열을 가지고 있어 문자열을 직접 수정 가능
    -> 추가, 삭제, 삽입, 뒤집기 등 반복 작업 효율적

  • 주요 메서드
    ->append(String s) / 문자열 끝에 추가 / sb.append("world");
    ->insert(int index, String s) / 특정 위치에 삽입 / sb.insert(1, "abc");
    ->delete(int start, int end) / start~end-1 위치 삭제 / sb.delete(0, 2);
    ->setCharAt(int index, char c) / 특정 위치 문자 변경 / sb.setCharAt(0, 'H');
    ->charAt(int index) / 특정 위치 문자 반환 / char c = sb.charAt(0);
    ->reverse() / 문자열 뒤집기 / sb.reverse();
    ->length() / 문자열 길이 / int len = sb.length();
    ->toString() / StringBuilder → String 변환 / String str = sb.toString();

[링크: 문자열 여러 번 뒤집기]

profile
0부터 시작하는 백엔드

0개의 댓글