https://www.acmicpc.net/problem/5430
5430번: AC
각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다.
www.acmicpc.net
문제
코드
import java.io.*;
import java.util.*;
public class Main {
private static final BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
private static final BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
public static void main(String[] args) throws IOException {
int t = Integer.parseInt(bf.readLine());
while(t > 0) {
t--;
boolean err = false;
String p = bf.readLine();
int n = Integer.parseInt(bf.readLine());
// StringTokenizer 을 이용한 입력 (두번째 인자는 구분자)
StringTokenizer st = new StringTokenizer(bf.readLine(), "[],");
Deque<Integer> deque = new ArrayDeque<>();
for(int i = 0 ; i < n ; i++) {
deque.add(Integer.parseInt(st.nextToken()));
}
int r = 0;
for(int i = 0 ; i < p.length() ; i++) {
if(p.charAt(i) == 'R') {
r++;
}
else {
n--;
// 덱이 비었음
if(n < 0) {
err = true;
break;
}
// 뒤집기 짝수면 덱 순서가 그대로이므로 pollFirst
if(r % 2 == 0) {
deque.pollFirst();
// 뒤집기 홀수면 덱 순서가 반대이므로 pollLast
} else {
deque.pollLast();
}
}
}
if(err) {
bw.write("error\n");
continue;
}
bw.write("[");
if(r % 2 == 0) {
while(!deque.isEmpty()) {
bw.write(deque.pollFirst() + "");
if(deque.size() > 0) {
bw.write(",");
}
}
} else {
while(!deque.isEmpty()) {
bw.write(deque.pollLast() + "");
if(deque.size() > 0) {
bw.write(",");
}
}
}
bw.write("]\n");
}
bf.close();
bw.flush();
bw.close();
}
}
'코딩테스트' 카테고리의 다른 글
[백준] 1234번 '크리스마스 트리' - Java (0) | 2023.08.23 |
---|---|
[백준] 1208번 '부분수열의 합 2' - Java (0) | 2023.08.22 |
[백준] 5052번 '전화번호 목록' - Java (0) | 2023.08.19 |
[백준] 1107번 '리모컨' - Java (1) | 2023.08.18 |
[백준] 1781번 '컵라면' - Java (1) | 2023.08.17 |