반응형
https://www.acmicpc.net/problem/1406
1406번: 에디터
첫째 줄에는 초기에 편집기에 입력되어 있는 문자열이 주어진다. 이 문자열은 길이가 N이고, 영어 소문자로만 이루어져 있으며, 길이는 100,000을 넘지 않는다. 둘째 줄에는 입력할 명령어의 개수
www.acmicpc.net
스택 두개를 선언을 해주고 커서가 왼쪽으로 움직이면 스택에 들어가 있는 문자를 오른쪽으로 옮겨주는 방식을 사용하여 문제 해결.
import java.io.*;
import java.util.*;
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));
Stack<String> leftSt = new Stack<String>();
Stack<String> rightSt = new Stack<String>();
String[] str =br.readLine().split("");
for(String s : str) { //Enhanced For Loop 사용
leftSt.push(s);
}
int N = Integer.parseInt(br.readLine()); //명령어 개수
for(int i = 0; i < N; i++) {
String command = br.readLine();
char c = command.charAt(0);
switch(c) {
case 'L':
if(!leftSt.isEmpty())
rightSt.push(leftSt.pop());
break;
case 'D':
if(!rightSt.isEmpty())
leftSt.push(rightSt.pop());
break;
case 'B':
if(!leftSt.isEmpty()) {
leftSt.pop();
}
break;
case 'P':
char t = command.charAt(2);
leftSt.push(String.valueOf(t));
//leftSt.push(st.nextToken());
break;
default:
break;
}
}
while(!leftSt.isEmpty())
rightSt.push(leftSt.pop());
while(!rightSt.isEmpty())
bw.write(rightSt.pop());
bw.flush();
br.close();
bw.close();
}// main()
}// class Main
728x90
반응형
'코딩테스트 > 백준' 카테고리의 다른 글
백준 2667 : 단지번호붙이기 _자바 Java (0) | 2023.02.01 |
---|---|
백준 2178 : 미로 탐색 _자바 Java (0) | 2023.01.31 |
백준 2630 : 색종이 만들기 _자바 Java (0) | 2023.01.30 |
백준 11725 : 트리의 부모 찾기 _자바 Java (0) | 2023.01.29 |
백준 18870 : 좌표 압축 _자바 Java (0) | 2023.01.29 |
댓글