
Solution 1) 내 풀이
class Solution {
public String solution(String my_string, int[][] queries) {
char[] arr = my_string.toCharArray();
for (int i = 0; i < queries.length; i++) {
int start = queries[i][0];
int end = queries[i][1];
for (int j = start; j <= (start + end) / 2; j++) {
char tmp = arr[j];
arr[j] = arr[start + end - j];
arr[start + end - j] = tmp;
}
}
return new String(arr);
}
}
new String(arr)로 return 시킬 수 있다.
(String 클래스의 생성자 중 하나는 char 배열을 인수로 받아 문자열로 변환해주기 떄문)
Solution 2) 다른 사람의 풀이
class Solution {
char[] arr;
public String solution(String my_string, int[][] queries) {
arr = my_string.toCharArray();
for (int[] query : queries) {
reverse(query[0], query[1]);
}
return new String(arr);
}
private void reverse(int s, int e) {
while (s < e) {
char temp = arr[s];
arr[s++] = arr[e];
arr[e--] = temp;
}
}
}
여러 방식이 보이지만 reverse 메서드를 새로 만들어 풀이한 이 방법이 내 마음에 들었다.
s와 e의 idx를 각각 늘리고 줄이는 작업을 반복하여 s가 e를 넘어서기 전에 멈추는 방식으로 깔끔해보인다.
'연습문제 > 프로그래머스, 기초 트레이닝' 카테고리의 다른 글
| [프로그래머스 기초_java]접미사 배열 (0) | 2023.10.25 |
|---|---|
| 9로 나눈 나머지 (숫자로 된 문자열의 숫자의 합) (0) | 2023.10.25 |
| 글자 이어 붙여 문자열 만들기 (StringBuilder) (0) | 2023.10.24 |
| 간단한 논리 연산(논리 연산자) (0) | 2023.10.24 |
| 배열 만들기 4 (1) | 2023.10.23 |