Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 마스터즈 2주차 회고
- 2021.01.17
- 백준 1149
- spring-boot
- 2021.01.21
- 잃어버린 괄호
- 괄호
- 코드스쿼드
- baekjoon1541
- 2021.01.06
- 백준
- 2021.01.22
- SWEA
- 코드스쿼드 마스터즈
- 2020.01.08
- 자바
- 2021.01.13
- 알고리즘데이
- algorithm
- Til
- 2021.01.18
- 2021.01.12
- java
- 2021.01.14
- 2021.01.19
- 박재성
- 백준 9093
- 쉽게 배우는 운영체제
- 알고리즘
- 2021.01.11
Archives
- Today
- Total
Cooper's devlog
에디터:1406번 - JAVA 본문
1. 문제 링크
https://www.acmicpc.net/problem/1406
2. 문제 설명
3. 문제 접근법
- 왼쪽 스택(lstack), 오른쪽 스택(rstack)을 선언한다.
- 입력된 문자를 모두 왼쪽 스택에(lstack)에 추가한다.
- 입력값에 따라 다르게 처리한다
- 'L' -> 오른쪽 스택의 가장 위에 값을 왼쪽 스택에(rstack -> lstack)에 이동한다.
- 'D' -> 왼쪽 스택의 가장 위의 값을 오른쪽 스택에(lstack -> rstack )에 이동한다.
- 'B' -> 왼쪽 스택에 있는 값을 제거한다.
- 'P $' -> 왼쪽 스택에 $을 추가한다.
4. 문제 풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
package data_structure1;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Stack;
public class editor_stack {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
Stack<Character> lStack = new Stack<>();
Stack<Character> rStack = new Stack<>();
String str = br.readLine();
int command_num = Integer.parseInt(br.readLine());
for (int i = 0; i < str.length(); i++) lStack.push(str.charAt(i));
for (int i = 1; i <= command_num; i++) {
String command = br.readLine();
if(command.startsWith("L")) {
if(!lStack.empty()) {
rStack.push(lStack.pop());
}
}
if(command.startsWith("D")) {
if(!rStack.empty()) {
lStack.push(rStack.pop());
}
}
if(command.startsWith("B")) {
if(!lStack.empty()) {
lStack.pop();
}
}
if(command.startsWith("P")) {
String[] pCommand = command.split(" ");
lStack.push(pCommand[1].toCharArray()[0]);
}
}
while(!lStack.empty()) {
rStack.push(lStack.pop());
}
while(!rStack.empty()) {
bw.write(rStack.pop());
}
br.close();
bw.flush();
bw.close();
}
}
|
5. 개선점 또는 트러블 슈팅
기존의 풀이: 입력 값의 위치 기반 인덱스로 문제 접근했는데, 생각보다 까다로워서 골머리가 아팠다.
하지만, stack으로 접근 시, 훨씬 논리가 깔끔하고 가독성도 좋은 코드로 접근 가능하다.
'Algorithm > Baekjoon' 카테고리의 다른 글
단어 뒤집기 :17413번 - JAVA (0) | 2020.07.09 |
---|---|
조세퍼스 문제 : 1158번 - JAVA (0) | 2020.07.08 |
스택수열 : 1874번 - JAVA (0) | 2020.07.07 |
괄호 : 9012번 - JAVA (0) | 2020.07.07 |
단어 뒤집기 : 9093번 - JAVA (0) | 2020.07.06 |
Comments