백준 - AC ( 5430번, JAVA )

changi123·2024년 12월 18일
0
post-thumbnail

deque ( https://www.acmicpc.net/problem/5430 )

풀이

  • 이전에 못풀었던 문제인데 다시 풀어보았다.. 근데 진짜 마의 16%에서 계속 오류가 떴다😂
  • 마의 16%를 해결하니 시간초과가 떴다. 이유는 나는 원래 deque를 비워버리고 거꾸로 된 배열을 넣어주고 거기서 반복을 돌려 답을 구했었다. 이걸 해결하기 위해 반대로 뽑는 상황일 때 / 일반적으로 뽑을 때를 나눠서 마지막에 StringBuilder에 append 해줬다. 더더더더 노력하자
package problem_solving.deque;

import java.util.ArrayDeque;
import java.util.Arrays;
import java.util.Deque;
import java.util.LinkedList;
import java.util.Scanner;
import java.util.regex.Pattern;

public class BaekJoon_5430 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int t = Integer.parseInt(sc.next());
		while(t-- > 0) {
			Boolean flag = true; 
			boolean reverseFlag = false;
			String p = sc.next();
			int size = Integer.parseInt(sc.next());
			String [] arr = sc.next().split(",");
			Deque<Integer> dq = new LinkedList<>();
			for(int i= 0 ; i < arr.length; i++) {
				String s = arr[i];
				if(arr.length == 1 ) {
					s = s.substring(1);
					s = s.substring(0,s.length()-1);
					if( s.length()== 0 ) {
						break;
					}
					dq.offer(Integer.parseInt(s));
					break;
				}
				if( i == 0 ) {
					s = s.substring(1);
				} else if (i == arr.length-1) {
					s = s.substring(0,s.length()-1);
				}				
				dq.offer(Integer.parseInt(s));
			}


			for(int i =0 ; i < p.length();i++) {

				char c = p.charAt(i);
				if( c == 'D') {
					if( dq.isEmpty()) {
						System.out.println("error");
						flag = false; 
						break; 
					} else {
						if( reverseFlag) {
							dq.pollLast();
						} else {
							dq.pollFirst();
						}
					}
				} else if( c== 'R') {
					reverseFlag = !reverseFlag;
				}
			}
			if( flag ) {
				if( dq.isEmpty()) {
					System.out.println("[]");
					continue;
				}
				StringBuilder sb = new StringBuilder("[");
				while(!dq.isEmpty()) {
					if (reverseFlag) {
						sb.append(dq.pollLast());
					} else {
						sb.append(dq.pollFirst());
					}
					if (!dq.isEmpty()) sb.append(",");
				}
				sb.append("]");
				System.out.println(sb.toString());
			}
			

		}


	}

}

profile
개발자 홍찬기 꾸준한 사람이 되자

0개의 댓글

관련 채용 정보