반응형
문제 설명
문자열 my_string과 정수 s, e가 매개변수로 주어질 때, my_string에서 인덱스 s부터 인덱스 e까지를 뒤집은 문자열을 return 하는 solution 함수를 작성해 주세요.
제한사항
- my_string은 숫자와 알파벳으로만 이루어져 있습니다.
- 1 ≤ my_string의 길이 ≤ 1,000
- 0 ≤ s ≤ e < my_string의 길이
입출력 예
입출력 예 설명
입출력 예 #1
- 예제 1번의 my_string에서 인덱스 6부터 인덱스 12까지를 뒤집은 문자열은 "ProgrammerS123"이므로 "ProgrammerS123"를 return 합니다.
입출력 예 #2
- 예제 2번의 my_string에서 인덱스 4부터 인덱스 10까지를 뒤집으면 원래 문자열과 같은 "Stanley1yelnatS"이므로 "Stanley1yelnatS"를 return 합니다.
문제코드 :
public class Solution {
public static String solution(String myString, int s, int e) {
StringBuilder result = new StringBuilder(myString);
StringBuilder reversedSubstring = new StringBuilder(myString.substring(s, e + 1)).reverse();
result.replace(s, e + 1, reversedSubstring.toString());
return result.toString();
}
}
문제풀이 :
우선 이 문제는 Stringbuilder 를 사용하는 것이 좋다.
왜냐하면 문자열은 불변 자료형이기 때문에 한번 생성된 것을 수정할 수 없기 때문이다.
반면 StringBuilder는 가변성을 가진 클래스이기때문에 수정할 수 있고,
문자열의 길이가 긴 경우에 더욱 효율적이다
1. result라는 myString(원본) 의 객체를 생성한다.
2. reversedSubstring 이라는 객체를 생성하는데,
이것은 원본을 s부터 e+1까지의 문자열을 뒤집어서 저장한 것이다.
여기서 subString은 (1,3) 일경우 1,2까지를 포함하기때문에.
e의 위치까지 포함하기 위해 +1을 해주었다.
3. 원본 객체인 result에 replace를 사용하여 s부터 e+1까지를 아까 생성했던,
뒤집힌 s부터 e+1까지의 문자열이 담긴 tostring으로 변환한 string 객체를 대체해준다.
4. 저장한 result 객체를 tostring으로 문자열로 만들어주어 반환한다.
반응형