🐣 알고리즘 삐약/💻 백준 삐약

53 삐약 : 백준 5430| 회전하는큐 [바킹독 문제 풀이Deque|JAVA]

우주수첩 2024. 5. 22. 15:49
728x90

 

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

 

 

package BKD_0x7_Deque;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;

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

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

        int T = Integer.parseInt(br.readLine());

        while(T-- > 0){

            char[] p  = br.readLine().toCharArray();
            int n = Integer.parseInt(br.readLine());

            String input = br.readLine();
            LinkedList<Integer> dq = new LinkedList<>();

            for(String val : input.substring(1,input.length()-1).split(",")){
                if(!val.equals("")){
                    dq.add(Integer.parseInt(val));
                }
            }

            System.out.println(AC(p,dq));



        }
        br.close ();

    }

    static String AC(char[] cmds, LinkedList<Integer> dq){
        boolean isReverse = false;

        for (char command : cmds) {
            if (command == 'R')
                isReverse = !isReverse;
            else {
                if (dq.size() == 0)
                    return "error";

                if (isReverse)
                    dq.pollLast();
                else
                    dq.pollFirst();
            }
        }

        StringBuilder sb = new StringBuilder("[");
        while (!dq.isEmpty()){
            sb.append(isReverse ? dq.pollLast() : dq.pollFirst());
            if(dq.size()!=0) sb.append(",");
        }
        sb.append("]");
        return sb.toString();

    }

}

 

 

 

 

덱을 사용하는 문제임을 알고 시작했음에도 불구하고 우엥..어떻게 뒤집지... 하고 있었다 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

뒤집어 보고나니 아닐 것 같아서 다른 분들의 풀이를 찾아보니 양방향 접근이 가능한 덱의 특징을 살려서 접근하면 되는 문제였다.

 

isReversed를 사용하여 'R' 명령어가 사용되었는지에 대한 여부를 파악하여 전방접근, 후방접근을 선택하였따.

 

 

전체적으로 코드의 길이를 줄이는 데는 다른 블로거분의 글을 많이 참고하였다.

다시 보고 나니 그냥 비슷한 것 같...

다음에는 더 잘 간결하게 작성해봐야게따.

https://girawhale.tistory.com/9

 

[백준] 5430번: AC - JAVA

문제 링크 BOJ 5430번: AC 5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net 풀이 과

girawhale.tistory.com

 

또한 꾸준하게 알고리즘을 풀지 않았던 탓에... ㅋㅋㅋㅋㅋㅋ

머리가 안돌아간다...

하루에 한 문제씩은 꼭 풀어야겠당...

 

728x90