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메소드로 해결하였습니다.