Notice
Recent Posts
Recent Comments
Link
«   2026/01   »
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
Tags
more
Archives
Today
Total
관리 메뉴

Development Log

[Baekjoon] 1406번: 에디터 본문

Coding Test/Baekjoon

[Baekjoon] 1406번: 에디터

gu-su 2022. 2. 13. 04:04

1. 첫번째 시도

소스코드

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

public class Pb1406_01 {
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
	
		Stack<Character> leftCursor = new Stack<>();
		Stack<Character> rightCursor = new Stack<>();
		
		char[] cmdString = br.readLine().toCharArray();
		
		for(char c : cmdString) {
			leftCursor.push(c);
		}
		
		int cmdNum = Integer.parseInt(br.readLine());
		char[] cmd = new char[3];
		
		while(cmdNum-- >0) {
			cmd = br.readLine().toCharArray();
			
			switch(cmd[0]) {
			case 'L':
				if(leftCursor.isEmpty()) {
					break;
				}
				rightCursor.push(leftCursor.pop());
				break;
			case 'D':
				if(rightCursor.isEmpty()) {
					break;
				}
				leftCursor.push(rightCursor.pop());
				break;
			case 'B':
				if(leftCursor.isEmpty()) {
					break;
				}
				leftCursor.pop();
				break;
			case 'P':
				leftCursor.push(cmd[2]);
				break;
			
			}
			
		}
		
		while(!leftCursor.isEmpty()) {
			rightCursor.push(leftCursor.pop());
		}
		
		while(!rightCursor.isEmpty()) {
			sb.append(rightCursor.pop());
		}
		
		System.out.print(sb.toString());
		
		br.close();
	}
}

결과

 

2. 두번째 시도 (toCharArray() => charAt(index))

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

public class Pb1406_02 {
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
	
		Stack<Character> leftCursor = new Stack<>();
		Stack<Character> rightCursor = new Stack<>();
		
		char[] cmdString = br.readLine().toCharArray();
		
		for(char c : cmdString) {
			leftCursor.push(c);
		}
		
		int cmdNum = Integer.parseInt(br.readLine());
		String cmd;
		char cmdChar;
				
		while(cmdNum-- >0) {
			cmd = br.readLine();
			cmdChar = cmd.charAt(0);
			
			switch(cmdChar) {
			case 'L':
				if(leftCursor.isEmpty()) {
					break;
				}
				rightCursor.push(leftCursor.pop());
				break;
			case 'D':
				if(rightCursor.isEmpty()) {
					break;
				}
				leftCursor.push(rightCursor.pop());
				break;
			case 'B':
				if(leftCursor.isEmpty()) {
					break;
				}
				leftCursor.pop();
				break;
			case 'P':
				leftCursor.push(cmd.charAt(2));
				break;
			
			}
			
		}
		
		while(!leftCursor.isEmpty()) {
			rightCursor.push(leftCursor.pop());
		}
		
		while(!rightCursor.isEmpty()) {
			sb.append(rightCursor.pop());
		}
		
		System.out.print(sb.toString());
		
		br.close();
	}
}

결과

 

3. 세번째 시도 (StringBuilder => BufferedWriter)

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 Pb1406_03 {
	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> leftCursor = new Stack<>();
		Stack<Character> rightCursor = new Stack<>();
		
		char[] cmdString = br.readLine().toCharArray();
		
		for(char c : cmdString) {
			leftCursor.push(c);
		}
		
		int cmdNum = Integer.parseInt(br.readLine());
		String cmd;
		char cmdChar;
				
		while(cmdNum-- >0) {
			cmd = br.readLine();
			cmdChar = cmd.charAt(0);
			
			switch(cmdChar) {
			case 'L':
				if(leftCursor.isEmpty()) {
					break;
				}
				rightCursor.push(leftCursor.pop());
				break;
			case 'D':
				if(rightCursor.isEmpty()) {
					break;
				}
				leftCursor.push(rightCursor.pop());
				break;
			case 'B':
				if(leftCursor.isEmpty()) {
					break;
				}
				leftCursor.pop();
				break;
			case 'P':
				leftCursor.push(cmd.charAt(2));
				break;
			
			}
			
		}
		
		while(!leftCursor.isEmpty()) {
			rightCursor.push(leftCursor.pop());
		}
		
		while(!rightCursor.isEmpty()) {
			bw.write(rightCursor.pop());
		}
		
		bw.flush();
		bw.close();
		br.close();
	}
}

결과

'Coding Test > Baekjoon' 카테고리의 다른 글

[Baekjoon] 10845번: 큐  (0) 2022.02.14
[Baekjoon] 10828번: 스택  (0) 2022.02.09