유블로그

[Java] BOJ 5430 AC 백준 본문

알고리즘

[Java] BOJ 5430 AC 백준

yujeong kang 2021. 5. 2. 02:24

BOJ_5430_AC[Java] BOJ 5430 AC 백준

 

www.acmicpc.net/problem/5430

 

5430번: AC

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

www.acmicpc.net

진ㅉ ㅏ시간초과 너무 힘들었다.

도저히 안되겠어서 다른 코드 봤더니 한 번도 안 써봤던 Deque 를 사용해야 하는 거였다.

 

수많은 수정 끝에..

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Deque;
import java.util.LinkedList;
import java.util.StringTokenizer;

public class BOJ_5430_AC {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		int T = Integer.parseInt(br.readLine());
		for (int i = 0; i < T; i++) {
			Deque<Integer> deque = new LinkedList<>();
			String order = br.readLine().replaceAll("RR", "");
			int N = Integer.parseInt(br.readLine());
			StringTokenizer st = new StringTokenizer(br.readLine(), "[],");
			for (int j = 0; j < N; j++) {
				deque.add(Integer.parseInt(st.nextToken()));
			}
			boolean isReverse = false;
			boolean isEnd = false;
		out:for (int j = 0; j < order.length(); j++) {
				char c = order.charAt(j);
				switch(c) {
				case 'R':
					isReverse = !isReverse;
					break;
				case 'D':
					if(deque.isEmpty()) {
						sb.append("error\n");
						isEnd = true;
						break out;
					}
					if(isReverse) deque.pollLast();
					else deque.pollFirst();

					break;
				}
				
			}
			
			if(!isEnd) {
				sb.append("[");
				if(isReverse) {
					while(!deque.isEmpty()) {
						sb.append(deque.pollLast());
						if(!deque.isEmpty()) sb.append(',');
					}
				}
				else {
					while(!deque.isEmpty()) {
						sb.append(deque.pollFirst());
						if(!deque.isEmpty()) sb.append(',');
					}
				}
				sb.append("]\n");
			}
		} // T
	
		System.out.println(sb.toString());
	}
}

 

deque는 앞뒤로 삽입 / 삭제가 가능하므로 reverse 상태일 때는 뒤에서 pollLast()

reverse 아닐 때는 일반적인 poll 을 사용하면 된다....

 

 

'알고리즘' 카테고리의 다른 글

[Java] BOJ 9935 문자열 폭발  (0) 2021.05.04
[Java] BOJ 4949 균형 잡힌 세상 백준  (0) 2021.05.03
[Java] BOJ 1541 잃어버린 괄호  (0) 2021.04.30
[Java] BOJ 2212 센서  (0) 2021.04.28
[Java] BOJ 2470 두 용액  (0) 2021.04.26