부자 되기 위한 블로그, 머니킹

김태원 선생님의 문자열 4번 알고리즘 문제이다.

 

문제

코드

package com.company.Main;

import java.util.Scanner;

public class Main {
    public String[] solution(String[] str) {
        String[] answer=new String[str.length];

        for (int i = 0; i < str.length; i++) {
            StringBuffer sb = new StringBuffer(str[i]);
            String reverse = sb.reverse().toString();
            answer[i] = reverse;
        }

        return answer;
    }

    public static void main(String[] args) {
        Main T = new Main();
        Scanner kb = new Scanner(System.in);
        Integer cnt = Integer.valueOf(kb.nextLine());
        String[] str = new String[cnt];
        for (int i = 0; i < cnt; i++) {
            str[i] = kb.next();
        }
        for (int i = 0; i < cnt; i++) {
            System.out.println(T.solution(str)[i]);
        }
    }
}

 

 

이론

 

String vs StringBuffer/StringBuilder

StringBuffer는 StringBuilder와 마찬가지로 String의 불변성 제약을 극복하기 위해 고안되었습니다. String은 값의 변경에 대해 추가하는 것이 아닌 새로 할당하기 떄문에 메모리 낭비가 심합니다. 하지만 StringBuilder/StringBuffer은 가변성으로 인해 메모리 가성비가 좋습니다.

 

StringBuilder를 통해 해결할 수 있지만 오늘은 StringBuilder를 통해 reverse메소드로 해결하였습니다.