프로그래머스 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;
}
}
반응형
'개발로그 > 알고리즘' 카테고리의 다른 글
프로그래머스 Lv.0 특이한 정렬 (0) | 2023.07.30 |
---|---|
프로그래머스 Lv.0 다항식 더하기 (0) | 2023.07.30 |
구간 합 (0) | 2023.07.30 |
프로그래머스 Lv.0 옹알이(1) (0) | 2023.07.30 |
프로그래머스 Lv.0 삼각형의 완성조건 (0) | 2023.07.30 |
댓글