Problem Solving/Baekjoon
[백준] 27497 알파벳 블록 - Data Structure / Java
graycode
2023. 6. 24. 17:36
• 문제 링크
27497번: 알파벳 블록
첫째 줄에 버튼을 누른 횟수 $N$이 주어진다. $(1 \leq N \leq 1\,000\,000)$ 둘째 줄부터 $N$개의 줄에는 버튼을 누른 순서대로 누른 버튼에 대한 정보를 주며 아래와 같은 형식으로 주어진다. 1 c : 문자열
www.acmicpc.net
• 풀이 과정
• 풀이 코드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayDeque;
import java.util.Deque;
import java.util.Stack;
public 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 n = Integer.parseInt(br.readLine());
Deque<Character> dq = new ArrayDeque<>();
Stack<Boolean> stk = new Stack<>();
while (n-- > 0) {
String input = br.readLine();
char op = input.charAt(0);
if (op == '1') {
dq.offerLast(input.charAt(2));
stk.push(true);
} else if (op == '2') {
dq.offerFirst(input.charAt(2));
stk.push(false);
} else if (!dq.isEmpty()) {
if (stk.pop()) dq.removeLast();
else dq.removeFirst();
}
}
StringBuilder sb = new StringBuilder();
for (char c : dq)
sb.append(c);
bw.write(sb.length() > 0 ? sb.toString() : "0");
bw.flush();
}
}