[백준][Java] 5430번 : AC 문제풀이 & 코드

2023. 4. 24. 15:00·Algorithm/백준
반응형

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

 

5430번: AC

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

www.acmicpc.net

 

실제로 배열을 뒤집어가면서 하면, 시간초과가 났을 것입니다.

따라서 deque를 통해 앞 뒤의 삭제를 해줍니다.

뒤집어진 상태는 reverse 라는 boolean 변수를 통해서 컨트롤합니다.

 

 

또한 이 문제에서는 stringbuilder를 써야만 시간초과를 해결할 수 있었습니다 !!

 

package WEEK0.P5430;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.reflect.Array;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.StringTokenizer;

public class Main {
    static int N;
    static ArrayList<Integer> arr;
    static ArrayDeque<Integer> deque;

    public static void main(String[] args) throws IOException {
        System.setIn(new FileInputStream("src/WEEK0/P5430/input.txt"));

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        StringBuilder sb = new StringBuilder();

        int TC = Integer.parseInt(st.nextToken());

        for (int tc = 0; tc < TC; tc++) {
            String op = br.readLine();
            N = Integer.parseInt(br.readLine());

            String input = br.readLine();
            input = input.replace("[", "");
            input = input.replace("]", "");
            String[] input_ = input.split(",");
            //arr = new ArrayList<>();
            deque = new ArrayDeque<>();

            for (int i = 0; i < N; i++) {
                deque.add(Integer.parseInt(input_[i]));
            }

            // 연산 시작
            boolean reverse = false;
            int flag = 0; // error 일 때 종료조건

            for (int i = 0; i < op.length(); i++) {
                if (op.charAt(i) == 'R') {
                    // 실제로 뒤집는게 아니라, 방향 변수 reverse 만 역전시켜주기
                    reverse = (reverse == true) ? false : true;
                } else if (op.charAt(i) == 'D') {
                    // 원소가 하나도 없으면 에러 출력
                    if (deque.size() == 0) {
                        flag = 1;
                        break;
                    }

                    // 원소가 하나라도 있으면 삭제
                    if (reverse) {
                        deque.removeLast();
                    } else {
                        deque.removeFirst();
                    }
                }
            }

            if(flag == 1){
                sb.append("error" + "\n");
                continue;
            }

            // 원소의 개수가 0 일때도 출력 돼야해 빈 괄호로!
            sb.append("[");
            if (reverse) {
                while (!deque.isEmpty()) {
                    if (deque.size() == 1) {
                        sb.append(deque.pollLast());
                    } else {
                        sb.append(deque.pollLast() + ",");
                    }

                }
            } else {
                while (!deque.isEmpty()) {
                    if (deque.size() == 1) {
                        sb.append(deque.pollFirst());
                    } else {
                        sb.append(deque.pollFirst() + ",");
                    }
                }
            }
            sb.append("]" + "\n");
        }

        System.out.println(sb);
    }
}
반응형
저작자표시 비영리 변경금지 (새창열림)

'Algorithm > 백준' 카테고리의 다른 글

[백준][11437번 : LCA] 최소 공통 조상 문제  (0) 2023.04.21
[백준][Java] 14503번 로봇 청소기 풀이 (구현, 시뮬레이션)  (2) 2023.04.18
[백준][자바] 1260번 DFS와 BFS  (0) 2022.08.11
[백준][c/c++] 2231번: 분해합  (0) 2022.02.20
[백준][C/C++] 9020번: 골드바흐의 추측  (0) 2022.02.18
'Algorithm/백준' 카테고리의 다른 글
  • [백준][11437번 : LCA] 최소 공통 조상 문제
  • [백준][Java] 14503번 로봇 청소기 풀이 (구현, 시뮬레이션)
  • [백준][자바] 1260번 DFS와 BFS
  • [백준][c/c++] 2231번: 분해합
Giken
Giken
𝐒𝐲𝐬𝐭𝐞𝐦.𝐨𝐮𝐭.𝐩𝐫𝐢𝐧𝐭𝐥𝐧("𝐇𝐞𝐥𝐥𝐨 𝐖𝐨𝐫𝐥𝐝!");
  • Giken
    개발자 기켄
    Giken
  • 전체
    오늘
    어제
    • 분류 전체보기 (148) N
      • Programming Language (26)
        • C (3)
        • C++ (2)
        • Java (19)
      • Web (4)
      • Database (1)
        • SQL (5)
      • Spring (10)
      • PHP (7)
      • Linux (1)
      • Server (1)
      • Infra (3)
      • Algorithm (74)
        • 백준 (71)
        • 프로그래머스 (0)
      • 프로젝트 (2)
      • Etc (8) N
      • 낙서 (5)
  • 블로그 메뉴

    • GitHub
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    1330
    평년
    윤년
    SQL
    C
    2588
    SQL고득점키트
    9498
    DB
    2753
    프로그래머스
    백준
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Giken
[백준][Java] 5430번 : AC 문제풀이 & 코드
상단으로

티스토리툴바