알 수 없는 사용자 2023. 5. 7. 15:57

https://www.acmicpc.net/problem/5430

 

5430번: AC

각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다.

www.acmicpc.net

package Koala_study.week_5;


import java.util.Deque;
import java.util.LinkedList;
import java.util.Scanner;
import java.util.StringTokenizer;

public class g_5430 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        StringTokenizer st;

        int t = in.nextInt();

        for (int i = 0; i < t; i++) {
            StringBuilder sb = new StringBuilder();
            Deque<Integer> dq = new LinkedList<>();

            String p = in.next();
            int n = in.nextInt();
            st = new StringTokenizer(in.next(), "[],");

            for (int j = 0; j < n; j++) {
                dq.add(Integer.parseInt(st.nextToken()));
            }

            int direct = 0; // 앞뒤 방향
            int error = 0; //에러사인
            sb.append("[");

            for (int k = 0; k < p.length(); k++) {
                char fun = p.charAt(k);

                switch (fun) {
                    case 'R':
                        if (direct == 0) direct = 1;
                        else direct = 0;
                        break;

                    case 'D':
                        if (dq.isEmpty()) {
                            error = 1;
                            break;
                        }

                        if (direct == 0) dq.pollFirst();
                        else dq.pollLast();
                        break;
                }
            }
            if (error == 1) {
                System.out.println("error");;
            } else {
                if (dq.isEmpty()) sb.append("]");
                while (!dq.isEmpty()) {
                    if (direct == 0) sb.append(dq.poll());
                    else sb.append(dq.pollLast());
                    if (!dq.isEmpty()) sb.append(",");
                    else sb.append("]");

                }

                System.out.println(sb.toString());
            }

        }
    }
}

 

자바로 문자열 구분을 할때 항상 spilt을 써왔었는데 이번 문제를 풀면서 StringTokenizer로 문자열 구분을 하여 입력을 받으면 더 편하다는 걸 알게되었다. 자주 애용해야겠다.