my_string의 문자 하나씩 조작할 수 있게 split을 통해 newStr 변수에 문자별로 나눠줍니다.
for문을 통해 my_string의 크기만큼 순회하도록 하고 answer에 newStr의 원소를 더하게 해줍니다.
여기서 if문으로 for문의 순서가 s와 같을 때에는 e부터 s까지 순회하는 for문을 만들고
answer에 newStr의 원소를 담게 하고
다른 if문에는 첫 번째 for문의 순서가 s보다 작거나 e보다 크면 answer에 newStr의 원소를 저장하게 하면 됩니다.
public class 문자열_뒤집기 {
public static void main(String[] args) {
/*
문자열 my_string과 정수 s, e가 매개변수로 주어집니다.
my_string에서 인덱스 s부터 인덱스 e까지를 뒤집은 문자열을
출력하는 문제입니다.
입출력 예
my_string s e result
"Progra21Sremm3" 6 12 "ProgrammerS123"
"Stanley1yelnatS" 4 10 "Stanley1yelnatS"
입출력 설명
입출력 예 #1
예제 1번의 my_string에서 인덱스 6부터 인덱스 12까지를 뒤집은 문자열은
"ProgrammerS123"이므로 "ProgrammerS123"를 return 합니다.
입출력 예 #2
예제 2번의 my_string에서 인덱스 4부터 인덱스 10까지를 뒤집으면
원래 문자열과 같은 "Stanley1yelnatS"이므로 "Stanley1yelnatS"를 return 합니다.
*/
String my_string = "Progra21Sremm3";
String[] newStr = my_string.split("");
StringBuilder answer = new StringBuilder();
int s = 6;
int e = 12;
for (int i = 0; i < newStr.length; i++) {
if (i == s) {
for (int j = e; j >= s; j--) {
answer.append(newStr[j]);
}
}
if (i < s || i > e) {
answer.append(newStr[i]);
}
}
System.out.println(answer);
}
}
프로그래머스 코드
class Solution {
public StringBuilder solution(String my_string, int s, int e) {
String[] newStr = my_string.split("");
StringBuilder answer = new StringBuilder();
for (int i = 0; i < newStr.length; i++) {
if (i == s) {
for (int j = e; j >= s; j--) {
answer.append(newStr[j]);
}
}
if (i < s || i > e) {
answer.append(newStr[i]);
}
}
return answer;
}
}