문제설명
문자열 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
입출력 예
my_string | queries | result |
"rermgorpsam" | [[2, 3], [0, 7], [5, 9], [6, 10]] | "programmers" |
입출력 예 설명
예제 1번의 my_string은 "rermgorpsam"이고 주어진 queries를 순서대로 처리하면 다음과 같습니다.
queries | my_string |
"rermgorpsam" | |
[2, 3] | "remrgorpsam" |
[0, 7] | "progrmersam" |
[5, 9] | "prograsremm" |
[6, 10] | "programmers" |
따라서 "programmers"를 return 합니다.
풀이
JAVA
class Solution {
public String solution(String my_string, int[][] queries) {
char[] arr = my_string.toCharArray(); // 문자열을 문자 배열로 변환
for (int[] query : queries) {
int start = query[0];
int end = query[1];
while (start < end) {
char temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
start++;
end--;
}
}
return new String(arr);
}
}
*다른 코드
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;
}
}
}
Python
def solution(my_string, queries):
for (s, e) in queries:
my_string = my_string[:s] + my_string[s:e+1][::-1] + my_string[e+1:]
return my_string
*다른 코드
def solution(my_string, queries):
answer=list(my_string)
for s,e in queries:
answer[s:e+1]=answer[s:e+1][::-1]
return ''.join(answer)
JS
function solution(my_string, queries) {
return queries.reduce((acc, [s, e]) => {
const start = acc.slice(0, s);
const mid = acc.slice(s, e + 1).split("").reverse().join("");
const end = acc.slice(e + 1);
return start + mid + end;
}, my_string)
}
*다른 코드
function solution(my_string, queries) {
let str = my_string.split('');
queries.forEach(([start, end]) => {
const changeStr = str.slice(start, end + 1);
str.splice(start, changeStr.length, ...changeStr.reverse());
});
return str.join('');
}
'프로그래머스 Lv.0' 카테고리의 다른 글
Lv.0 부분 문자열 이어 붙여 문자열 만들기 (0) | 2025.02.05 |
---|---|
Lv.0 배열 만들기 5 (0) | 2025.02.05 |
Lv.0 9로 나눈 나머지 (0) | 2025.02.04 |
Lv.0 글자 이어 붙여 문자열 만들기 (0) | 2025.02.03 |
Lv.0 주사위 게임 3 (0) | 2025.02.03 |