AC 5430

LJM·2023년 7월 18일
0

백준풀기

목록 보기
185/259

로직을 짜는건 쉬웠다.. 근데 출력처리에서 반례를 찾는데 한참 걸렸고 입력받을때 문자를 숫자로 변환하는 함수가 틀려서 이거 찾는것도 한시간이나 걸려서 겨우 찾았다...

덱? 은 안쓰고 투포인터로 풀었다

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

import java.io.*;
import java.util.*;

public class Main {

    public static void main(String[] args) throws IOException{

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int t = Integer.parseInt(br.readLine());//~100

        for (int i = 0; i < t; i++) {

            String[] input = br.readLine().split("");

            //1 ~ 100000
            char[] function = new char[input.length];
            for (int j = 0; j < input.length; j++) {
                function[j] = input[j].charAt(0);
            }

            int n = Integer.parseInt(br.readLine());//0~100000
            int num = 0;
            ArrayList<Integer> arr = new ArrayList<>();
            input = br.readLine().split("");
            for (int j = 0; j < input.length; j++) {
                if(isNum(input[j].charAt(0))){
                    num = num*10 + Integer.parseInt(input[j]);
                }else if(num != 0){
                    arr.add(num);
                    num = 0;
                }
            }

            int left = 0;
            int right = arr.size()-1;
            boolean isLeft = true;

            boolean error = false;
            for (int j = 0; j < function.length; j++) {

                if(function[j] == 'R'){
                    isLeft = !isLeft;
                }else{

                    if(left > right){
                        error = true;
                        break;
                    }

                    if(isLeft){
                        left++;
                    }else{
                        right--;
                    }
                }
            }

            if(error)
                System.out.println("error");
            else{

                StringBuilder sb = new StringBuilder();

                if(left == right){
                    sb.append("["+arr.get(left)+"]");
                }else {

                    if(isLeft){
                        for (int j = left; j <= right; j++) {
                            if(j== left){
                                sb.append("[" + arr.get(j));
                            }else if(j == right){
                                sb.append("," + arr.get(j) + "]");
                            }else{
                                sb.append("," + arr.get(j));
                            }
                        }
                    } else {

                        for (int j = right; j >= left; j--) {
                            if (j == right) {
                                sb.append("[" + arr.get(j));
                            } else if (j == left) {
                                sb.append("," + arr.get(j) + "]");
                            } else {
                                sb.append("," + arr.get(j));
                            }
                        }

                    }
                }

                if(sb.length() == 0)
                    sb.append("[]");

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

    }
    public static boolean isNum(char c){
        if(c - '0' >= 0 && c-'0'<=9)
            return true;

        return false;
    }
}
profile
게임개발자 백엔드개발자

1개의 댓글

comment-user-thumbnail
2023년 7월 18일

글 잘 봤습니다, 감사합니다.

답글 달기

관련 채용 정보