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

haeun·2024년 3월 23일
0

Algorithm

목록 보기
2/3
post-thumbnail

📌 Problem : https://school.programmers.co.kr/learn/courses/30/lessons/120822?language=java

기본적인 for문을 사용해 풀이하였는데 성능적으로 아쉬운 부분이 있어 여러가지 다른 풀이 방법을 함께 정리해보았습니다.





👉 Approach

메모리: 75.5 MB, 시간: 9.32 ms
반복문을 사용해 주어진 문자열의 length()-1 부터 0까지 반복합니다.
초기화한 answer에 chatAt(index)로 문자를 추가해줍니다.




✔️ Code

class Solution {
    public String solution(String my_string) {
        String answer = "";
        for(int i = my_string.length()-1; i >= 0; i--){
            answer += my_string.charAt(i);
        }
        return answer;
    }
}



✌️Approach

메모리: 75.8 MB, 시간: 0.03 ms // StringBuilder
메모리: 73.7 MB, 시간: 0.07 ms // StringBuffer

인스턴스를 생성할 때 reverse() 메소드로 문자열을 변경하여 strReversed 변수에 담아줍니다. 변수를 toString하여 리턴하는 패턴으로 StringBuilder와 StringBuffer 두 클래스를 동일한 로직을 사용합니다.
이전 코드보다 성능이 상대적으로 좋아진 것을 확인 할 수 있습니다.

StringBuilder와 StringBuffer는 가변적인 문자열을 다루는 클래스입니다. 두 클래스는 거의 동일한 기능을 제공하지만, 차이점은 스레드 안전성에 있습니다. StringBuilder는 스레드 안전하지 않고, StringBuffer는 스레드 안전합니다. 그러므로 단일 스레드 환경에서는 StringBuilder를 사용하는 것이 일반적으로 더 효율적입니다.

주요 메소드
append(): 문자열을 추가합니다.
insert(): 지정된 위치에 문자열을 삽입합니다.
delete(): 지정된 범위의 문자열을 삭제합니다.
deleteCharAt(): 지정된 인덱스의 문자를 삭제합니다.
replace(): 지정된 범위의 문자열을 다른 문
자열로 대체합니다.
reverse(): 문자열을 뒤집습니다.
toString(): String으로 변환합니다.




✔️ Code

class Solution {
    public String solution(String my_string) {
        StringBuilder strReversed = new StringBuilder(my_string).reverse();
        // StringBuffer strReversed = new StringBuffer(my_string).reverse();
        String answer = strReversed.toString();
        return answer;
    }
}
profile
환영합니다 :) 이 곳은 개인 공부를 정리하고 창의적으로 활용하기 위한 제 2의 전두엽으로 활용되고 있으며, 오류에 대한 피드백은 댓글로 남겨주시면 감사하겠습니다.

0개의 댓글