코딩테스트/백준

백준 1406 : 에디터 _자바 Java

플래시🦥 2023. 1. 31.
반응형

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
반응형

댓글