Level. 0
문제
문자열 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
풀이
class Solution {
public String solution(String my_string, int[][] queries) {
String std = my_string;
// 주어진 문자열을 문자 어레이로 변환
char[] chars = std.toCharArray();
for(int i=0; i<queries.length; i++){
int start = queries[i][0];
int end = queries[i][1];
for(int j = start; j<end; j++){
chars[j] = std.charAt(end);
chars[end] = std.charAt(j);
end--;
}
// 문자 어레이을 다시 문자열로 변환
std = String.valueOf(chars);
}
return std;
}
}
String.toCharArray()
- 문자열을 char형 배열로 변환해수는 메서드
String.valueOf()
- char 배열을 다시 문자열로 변환
- String.copyValueOf(), String 생성자도 char배열을 문자열로 변환할 수 있다.
다른 풀이
class Solution {
public String solution(String myString, int[][] queries) {
for (int[] arr : queries) {
myString = myString.substring(0, arr[0]) + new StringBuilder(myString.substring(arr[0], arr[1] + 1)).reverse().toString() + myString.substring(arr[1] + 1);
}
return myString;
}
}
StringBuilder의 reverse 메서드를 사용하여 문자열을 뒤집었다.
https://school.programmers.co.kr/learn/courses/30/lessons/181913
'Algorithm > Programers - Java' 카테고리의 다른 글
[프로그래머스(Java)] 무작위로 K개의 수 뽑기 / ArrayList.contains(), Stream concat(), limit(), distinct() (0) | 2023.09.09 |
---|---|
[프로그래머스(Java)] 수열과 구간 쿼리 2 / Arrays.fill() (0) | 2023.09.09 |
[프로그래머스(Java)] 배열 만들기 6 / Stack (0) | 2023.09.04 |
[프로그래머스(Java)] 조건 문자열 / BiFunction, Map.of() (0) | 2023.09.04 |
[프로그래머스(Java)] 왼쪽 오른쪽 / Stream (0) | 2023.09.03 |