TIL

20240225

casylm 2025. 2. 25. 22:50

자바 코딩테스트

package org.example.infrenJavaCodingTest;

import java.util.ArrayList;
import java.util.Scanner;

public class chap2_4 {
//    public ArrayList<String> solution(int n, String[] str){
//        ArrayList<String> answer = new ArrayList<>();
//        for(String x : str){
//            String tmp = new StringBuilder(x).reverse().toString(); // 뒤집은 후 다시 String 화
//            answer.add(tmp);
//        }
//
//        // String = 서로 더하거나 , replace 시 새로운 객체가 생성됨
//        // StringBuilder는 처음 만든 객체로 활용
//        // 메모리 낭비 없음의 장점 -> String 연산이 많을 때 유용
//        return answer;
//    }

    public ArrayList<String> solution(int n, String[] str){
        ArrayList<String> answer = new ArrayList<>();
        for(String x : str){
            char[] s = x.toCharArray(); // String 을 문자 배열로 만듦
            int lt = 0 , rt = x.length()-1;
            char temp;

            while(lt < rt){
                temp = s[rt];
                s[rt] = s[lt];
                s[lt] = temp;
                lt++;
                rt--;
            }

            // vlaueOf는 static 메소드이기 때문에 클래스. 으로 접근가능
            String tmp = String.valueOf(s);
            answer.add(tmp);

            // 왜 안됨?
            //answer.add(s.toString());
        }

        return answer;
    }

    public static void main(String[] args) {
        chap2_4 T = new chap2_4();
        Scanner kb = new Scanner(System.in);
        int n = kb.nextInt();
        String[] str = new String[n];
        for(int i = 0; i<n; i++){
            str[i] = kb.next();
        }
        for(String x : T.solution(n,str)){
            System.out.println(x);
        }
    }
}