백준 문제풀이

1406. 에디터 (자바, Java)

뮤츠 2022. 11. 5. 21:43

보기에는 기본적인 연습문제같아보였는데, 생각보다 쉽진 않았다.

커서의 앞, 뒤 각각의 스택을 만들고, 커서가 한 방향으로 이동시, 해당 방향으로 스택을 뺴주고, 반대방향은 스택을 채워주는 식으로 커서의 위치를 확정했다.

 

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Stack;

public class Main {

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String str = br.readLine();
		int m = Integer.parseInt(br.readLine());
		Stack <Character> leftstack = new Stack<>();
		Stack <Character> rightstack = new Stack<>();
		StringBuilder sb = new StringBuilder();
		
		for (int i=0; i<str.length(); i++) {
			leftstack.push(str.charAt(i));
		}
		
		for (int i=0; i<m; i++) {
			str = br.readLine();
			char msg = str.charAt(0);
			if (msg=='L' && !leftstack.isEmpty()) {
				rightstack.push(leftstack.peek());
				leftstack.pop();
			} else if (msg=='D' && !rightstack.isEmpty()) {
				leftstack.push(rightstack.peek());
				rightstack.pop();
			} else if (msg=='B' && !leftstack.isEmpty()) {
				leftstack.pop();
			} else if (msg=='P') {
				leftstack.push(str.charAt(2));
			}
		}
		
		for (int i=0; i<leftstack.size(); i++) {
			sb.append(leftstack.get(i));
		}
		for (int i=rightstack.size()-1; i>=0; i--) {
			sb.append(rightstack.get(i));
		}
		
		System.out.println(sb);

	}

}

'백준 문제풀이' 카테고리의 다른 글

1158. 요세푸스 문제 (자바, Java)  (0) 2022.11.05
10845. 큐 (자바, Java)  (0) 2022.11.05
1874. 스택 수열 (자바, Java)  (0) 2022.11.05
9012. 괄호 (자바, Java)  (0) 2022.11.05
9093. 단어 뒤집기 (자바, Java)  (0) 2022.11.05