https://www.acmicpc.net/problem/1406
📝문제
📝풀이
시간제한을 보면 매우 빡빡한 것을 알 수 있다.
실패한 원인은 처음에 LinkedList 를 썼으나 결국엔 조건을 만족하기 위해서 index를 타야 했기 때문
입력이 매우 길기 때문에 index를 탈 생각을 하면 안된다 ( StringBuilder.insert 연산도 마찬가지)
따라서 2개의 스택만으로 모든 걸 해결해야 하는 문제이다
package baekjoon;
import static java.util.Arrays.*;
import java.io.*;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Stack;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Stack<String> left = stream(br.readLine().split(""))
.collect(Collectors.toCollection(Stack::new));
Stack<String> right = new Stack<>();
int queryCount = Integer.parseInt(br.readLine());
for(int i=0;i<queryCount;i++){
String[] input = br.readLine().split(" ");
String query = input[0];
if(query.equals("L") && !left.isEmpty()){
right.add(left.pop());
}else if(query.equals("D") && !right.isEmpty()){
left.add(right.pop());
}else if(query.equals("B") && !left.isEmpty()){
left.pop();
}else if(query.equals("P") ){
left.add(input[1]);
}
}
StringBuffer ans = new StringBuffer();
left.forEach(ans::append);
while (!right.isEmpty())
ans.append(right.pop());
System.out.println(ans);
}
}
'알고리즘,PS > 백준' 카테고리의 다른 글
[BOJ] 백준 [12100] 2048(Easy) JAVA (0) | 2022.04.28 |
---|---|
[BOJ] 백준 [16198] 에너지 모으기JAVA (0) | 2022.04.27 |
[BOJ] 백준 [2504] 괄호의 값JAVA (0) | 2022.04.21 |
[BOJ] 백준 [18111] 마인크래프트 JAVA (0) | 2022.04.20 |
[BOJ] 백준 [1107] 리모컨 JAVA (0) | 2022.04.15 |