
내가 생각했을때 문제에서 원하는부분
문자열 my_string과 이차원 정수 배열 queries가 매개변수로 주어집니다.
queries의 원소는 [s, e] 형태로, my_string의 인덱스 s부터 인덱스 e까지를 뒤집으라는 의미입니다.
my_string에 queries의 명령을 순서대로 처리한 후의 문자열을 return 하는 solution 함수를 작성해 주세요.
내가 이 문제를 보고 생각해본 부분
Main32 클래스는 자바 애플리케이션 진입점인 main 메서드를 포함한다.
main 메서드 안에서 문제 해결용 Solution 객체를 생성한다.
예시의 my_string과 queries 배열을 정의한다.
solution 메서드를 호출해 결과 문자열을 얻는다.
결과를 System.out.println으로 출력하여 콘솔에서 확인할 수 있다.
Solution 클래스의 solution 메서드는 StringBuilder를 이용해 입력 문자열을 가변적으로 처리한다.
각 쿼리 [s, e] 구간의 문자열을 양끝 문자부터 교환하여 뒤집는다.
코드로 구현
class Solution {
public String solution(String my_string, int[][] queries) {
StringBuilder sb = new StringBuilder(my_string);
for (int[] query : queries) {
int s = query[0];
int e = query[1];
while (s < e) {
char temp = sb.charAt(s);
sb.setCharAt(s, sb.charAt(e));
sb.setCharAt(e, temp);
s++;
e--;
}
}
return sb.toString();
}
}
프로그래머스 코드
package programmers;
// 프로그래머스 문자열 여러 번 뒤집기
public class Main32 {
public static void main(String[] args) {
Solution5 solution5 = new Solution5();
String my_string = "rermgorpsam";
int[][] queries = { {2, 3}, {0, 7}, {5, 9}, {6, 10} };
String result = solution5.solution(my_string, queries);
System.out.println(result); // "programmers" 출력 예상
}
}
class Solution5 {
public String solution(String my_string, int[][] queries) {
StringBuilder sb = new StringBuilder(my_string);
for (int[] query : queries) {
int s = query[0];
int e = query[1];
while (s < e) {
char temp = sb.charAt(s);
sb.setCharAt(s, sb.charAt(e));
sb.setCharAt(e, temp);
s++;
e--;
}
}
return sb.toString();
}
}
위에 있는 코드를 변경한 코드
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.