728x90
코드 힌트
- 쿼리 순회
- 주어진 queries 배열을 순회하며 각 쿼리에서 시작 인덱스 s와 끝 인덱스 e를 추출합니다.
- 앞부분 자르기
- my_string에서 시작 인덱스 s 이전의 문자열을 저장합니다.
- 뒤집을 부분 문자열 생성
- String을 사용하여 my_string에서 s부터 e까지의 문자열을 뒤집습니다.
- 문자열 뒤집는 2가지 방법 : https://shs00925.tistory.com/60
- 뒷부분 자르기
- my_string에서 끝 인덱스 e 이후의 문자열을 저장합니다.
- 새로운 문자열 생성
- s이전의 문자열, 뒤집은 문자열, e이후의 문자열을 합쳐서 새로운 my_string을 만듭니다.
- 최종 결과 반환
- 모든 쿼리를 처리한 후 최종 결과 문자열을 반환합니다.
정답은 더보기 클릭
더보기
1. String으로 문제 풀기
class Solution {
public String solution(String my_string, int[][] queries) {
// 주어진 쿼리들에 대해 순회합니다.
for (int[] query : queries) {
int s = query[0]; // 시작 인덱스
int e = query[1]; // 끝 인덱스
// 문자열의 앞부분을 자릅니다.
String front = my_string.substring(0, s);
// 뒤집을 부분 문자열을 생성합니다.
StringBuilder reverseStr = new StringBuilder();
for (int i = e; i >= s; i--) {
reverseStr.append(my_string.charAt(i));
}
// 문자열의 뒷부분을 자릅니다.
String back = my_string.substring(e + 1);
// 새로운 문자열을 생성합니다.
my_string = front + reverseStr.toString() + back;
}
// 최종 결과 문자열을 반환합니다.
return my_string;
}
}
2. StringBuilder를 활용하여 문제 풀기
import java.util.*;
class Solution {
public String solution(String my_string, int[][] queries) {
for (int[] query : queries) {
StringBuilder sb = new StringBuilder(my_string.substring(query[0],query[1]+1));
my_string = my_string.substring(0,query[0])
+ sb.reverse()
+ my_string.substring(query[1]+1);
}
return my_string;
}
}
728x90
'프로그래머스(Java) > Level 0' 카테고리의 다른 글
[프로그래머스] 문자열 정렬하기 (2) (0) | 2024.07.26 |
---|---|
[프로그래머스] 숫자 찾기 (0) | 2024.07.24 |
[프로그래머스] 연속된 수의 합 (0) | 2024.07.22 |
[프로그래머스] 겹치는 선분의 길이 (0) | 2024.07.19 |
[프로그래머스] k의 개수 (0) | 2024.07.19 |