문제
https://www.acmicpc.net/problem/5430
5430번: AC
각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다.
www.acmicpc.net
문제 설명
문제 풀이
덱(Deque) 자료구조를 사용해서 해결했다.
처음에 자료구조를 스택으로 하고 R과 D에 대응하는 메서드를 직접 작성했는데 시간초과가 발생했다.
코드
package BEAKJOON.Java.Gold;
import java.util.*;
import java.io.*;
class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int T = Integer.parseInt(br.readLine());
while (T-- > 0) {
StringBuilder sb = new StringBuilder();
char[] op = br.readLine().toCharArray();
int n = Integer.parseInt(br.readLine());
Deque<String> dq = new LinkedList<>();
String str1 = br.readLine();
str1 = str1.replace("[", "");
str1 = str1.replace("]", "");
String[] sArr = str1.split(",");
boolean flag = true;
boolean result = false;
for (String str : sArr) {
dq.add(str);
}
for (char c : op) {
if (c == 'R') {
flag = !flag;
} else {
if (n - 1 >= 0) {
if (flag) {
dq.removeFirst();
n--;
} else {
dq.removeLast();
n--;
}
} else {
bw.write("error\n");
result = true;
break;
}
}
}
if (!result) {
if (dq.size() == 0) {
bw.write("[]\n");
} else {
sb.append("[");
if (flag) {
for (int i = 0; i < n - 1; i++) {
sb.append(dq.pollFirst() + ",");
}
sb.append(dq.pollFirst() + "]\n");
} else {
for (int i = 0; i < n - 1; i++) {
sb.append(dq.pollLast() + ",");
}
sb.append(dq.pollLast() + "]\n");
}
}
bw.write(sb.toString());
}
}
bw.close();
}
}
'🧑💻코딩 테스트 > 백준 (BOJ)' 카테고리의 다른 글
[코딩테스트/백준 알고리즘] 18870번 - 좌표 압축 (Java, 자바 풀이) (0) | 2022.12.21 |
---|---|
[코딩테스트/백준 알고리즘] 1012번 - 유기농 배추 (Java, 자바 풀이) (0) | 2022.12.20 |
[코딩테스트/백준 알고리즘] 2606번 - 바이러스 (Java, 자바 풀이) (0) | 2022.12.15 |
[코딩테스트/백준 알고리즘] 1927번 - 최소 힙 (Java, 자바 풀이) (2) | 2022.12.14 |
[코딩 테스트/ 백준 알고리즘] 17219번 - 비밀번호 찾기 (Java, 자바 풀이) (0) | 2022.12.13 |
댓글