
내가 생각했을때 문제에서 원하는부분
문자열 my_string과 정수 s, e가 매개변수로 주어질 때, my_string에서 인덱스 s부터 인덱스 e까지를 뒤집은 문자열을 return 하는 solution 함수를 작성해 주세요.
내가 이 문제를 보고 생각해본 부분
solution 메서드는 입력 문자열 my_string과 인덱스 s, e를 매개변수로 받는다.
my_string.substring(0, s)는 문자열의 시작부터 s 직전까지 부분 문자열을 추출한다.
이를 front에 저장한다.
my_string.substring(s, e + 1)는 인덱스 s부터 e까지의 부분 문자열을 추출한다.
이를 middle에 저장한다.
my_string.substring(e + 1)는 e 다음 인덱스부터 끝까지 부분 문자열을 추출한다.
이를 back에 저장한다.
new StringBuilder(middle).reverse().toString()는 middle 문자열을 뒤집는다.
이를 reversedMiddle에 저장한다.
최종적으로 front + reversedMiddle + back을 합쳐서 원하는 결과 문자열을 반환한다.
main 메서드는 두 가지 테스트 케이스를 실행한다.
첫 번째 문자열 "Progra21Sremm3"에서 인덱스 6부터 12까지의 구간을 뒤집어 "ProgrammerS123"을 출력한다.
두 번째 문자열 "Stanley1yelnatS"는 인덱스 4부터 10까지 뒤집었지만 원래 문자열과 같아 "Stanley1yelnatS" 그대로 출력된다.
코드로 구현
class Solution {
public String solution(String my_string, int s, int e) {
String front = my_string.substring(0, s);
String middle = my_string.substring(s, e + 1);
String back = my_string.substring(e + 1);
String reversedMiddle = new StringBuilder(middle).reverse().toString();
return front + reversedMiddle + back;
}
}
프로그래머스 코드
package programmers;
// 프로그래머스 문자열 뒤집기
public class Main40 {
public static String solution(String my_string, int s, int e) {
String front = my_string.substring(0, s);
String middle = my_string.substring(s, e + 1);
String back = my_string.substring(e + 1);
String reversedMiddle = new StringBuilder(middle).reverse().toString();
return front + reversedMiddle + back;
}
public static void main(String[] args) {
String myString1 = "Progra21Sremm3";
int s1 = 6, e1 = 12;
String result1 = solution(myString1, s1, e1);
System.out.println(result1); // ProgrammerS123
String myString2 = "Stanley1yelnatS";
int s2 = 4, e2 = 10;
String result2 = solution(myString2, s2, e2);
System.out.println(result2); // Stanley1yelnatS
}
}
위에 있는 코드를 변경한 코드
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.