Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Tags more
Archives
Today
Total
관리 메뉴

David의 블로그

프로그래머스 - 문자열 뒤집기 본문

프로그래밍/코딩

프로그래머스 - 문자열 뒤집기

David 리 2024. 6. 22. 13:36

문제설명>

문자열 my_string과 정수 s, e가 매개변수로 주어질 때, my_string에서 인덱스 s부터 인덱스 e까지를 뒤집은 문자열을 return 하는 solution 함수를 작성해 주세요.

 

내 생각>

1) reverse() 이용하기.

for문으로 순회하여 역순으로 String을 가공하는 것보다

StirngBuilder 객체로 reverse()를 이용했다.

1
2
3
4
5
6
7
8
9
10
11
12
13
// 문자열 뒤집기
//        "Progra21Sremm3"    6    12    "ProgrammerS123"
//        "Stanley1yelnatS"    4    10    "Stanley1yelnatS"
        String my_string = "Progra21Sremm3";
        int s = 6;
        int e = 12;
        String answer = "";
           
        StringBuilder strB = new StringBuilder(my_string.substring(s, e + 1));
        StringBuilder strB2 = new StringBuilder(my_string.substring(s, e + 1));
        
        my_string = my_string.replace(strB, strB2.reverse());
        System.out.println(my_string);
cs

 

여기서 주의해야 할 점은

역순용 StringBuilder객체를 하나 더 생성해줬다는 점과

String.replace()는 값을 할당해 줄 변수가 필요하다는 점이다.

 

 

2) concat이용하기.

1
2
3
4
5
6
7
8
9
10
11
// concat으로 풀기
        String temp = my_string.substring(s, e+1);
 
         String tempStr = "";
         for (int i = temp.length() - 1; i >= 0; i--) {
             tempStr += temp.substring(i, i+1);
         }
         System.out.println(tempStr);
        
         answer = answer.concat(my_string.substring(0, s).concat(tempStr).concat(my_string.substring(e+1)));
         System.out.println(answer);
cs

concat()으로 이용할 시, 어느 위치의 인덱스에 concat할 것인지 생각해야 했기때문에, 주어진 변수 s, e를 이용하여 concat()을 이용할 수 있었다.

 

 

3) for문 이용하기.

만약 이용하기 편한 StringBilder객체가 없다는 가정하에서 풀어봤다.

1
2
3
4
5
6
7
8
// for문으로 만들어보기.
        String revStr = "";
        for (int i = e; i >= s; i--) {
            System.out.println(my_string.substring(i, i + 1));
            revStr += my_string.substring(i, i + 1);
        }
        my_string = my_string.replace(my_string.substring(s, e + 1), revStr); 
        System.out.println(my_string);
cs

위에 똑같이 for문으로 역순으로 가공한 문자열을 만들고,

replace()를 이용하여 결과를 만들어줬다.