[프로그래머스][JAVA] 문자열 뒤집기

Boknami·2023년 7월 19일
0

프로그래머스

목록 보기
5/29

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

기록의 이유

  1. 자바의 문자열은 변경할 수 없다.
    my_string.replaceAll(answer, reversedStr);을 하고 바로 return을 했는데 이렇게 하는 건 당연히 안된다. 자바의 문자열은 변경이 불가능하기 때문에 리스트로 변경을 하거나 굳이 하고 싶다면 새로운 객체를 만들어 내는 방법을 사용한다.

my_string = my_string.replaceAll(answer, reversedStr);

  1. StringBuffer을 이용한 reverse
    이때까지 String버퍼를 사용할 수 있는 순간들에도 사용하지 않았다. 무언가 엄청 편한 방법? 쉬운 방법보다 기본적인 배열? 내에서 해결하고 싶었지만 이번 기회에 학습해보기로 했다.

String Buffer

이유 : 스트링 변경을 할 때 String에 +나 concat을 이용해도 되지만 이 경우는 새로운 객체를 생성하는 방법임. 그렇기에 이를 많이 사용하는 것은 당연히 비효율적

  • b.append(값)
  • sb.insert(인덱스, 값)
  • sb.delete(인덱스, 인덱스)
  • sb.indexOf(값)
  • sb.substring(인덱스, 인덱스)
  • sb.length()
  • sb.replace(인덱스, 인덱스, 값)
  • sb.reverse()

코드

class Solution {
    public String solution(String my_string, int s, int e) {
        //해당 String을 뽑는다
        String answer = my_string.substring(s,e+1);
        
        //뒤집어서 다른 변수에 저장한다
        StringBuffer sb = new StringBuffer(answer);
        String reversedStr = sb.reverse().toString();
        
        //원본에다 뒤집은 걸 대체한다
        my_string = my_string.replaceAll(answer, reversedStr);
        return my_string;
    }
}

1개의 댓글

comment-user-thumbnail
2023년 7월 19일

너무 좋은 글이네요. 공유해주셔서 감사합니다.

답글 달기

관련 채용 정보