-
Java 1406 에디터PS 2023. 5. 2. 01:40
풀이 :
두개의 스택을 생성한 뒤 커서의 이동은 왼쪽에 있는 스택을 pop한 뒤 오른쪽 스택에 push 하는 식으로 커서의 이동을 구현하였고, 값의 추가와 삭제는 간단하게 왼쪽 스택에 있는 값들만 push, pop하는 식으로 진행하였습니다.
마지막에는 왼쪽 스택에 있는 값들을 오른쪽 스택으로 푸쉬한 뒤에 오른쪽의 스택에서 값들을 StringBuilder에 추가하여 출력하였습니다.
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { static class CharStack { char[] stack; int size; public CharStack(int n) { this.stack = new char[n]; this.size = 0; } public void push(char data) { stack[size] = data; size++; } public char pop() { if (size == 0) { return 'x'; } char data = stack[size-1]; size--; return data; } public int empty() { if (size == 0) { return -1; } else { return 0; } } public int size() { return size; } public char top() { if (size == 0) { return 'x'; } return stack[size - 1]; } } public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); CharStack leftStack = new CharStack(600000); CharStack rightStack = new CharStack(600000); StringTokenizer st; StringBuilder sb = new StringBuilder(); int n = Integer.parseInt(br.readLine()); for(int i = 0; i < str.length(); i++){ leftStack.push(str.charAt(i)); } for(int i = 0; i < n; i++){ st = new StringTokenizer(br.readLine()); String str1 = st.nextToken(); switch (str1){ case "L": if(leftStack.empty() == -1){ break; } char pop = leftStack.pop(); rightStack.push(pop); break; case "D": if(rightStack.empty() == -1){ break; } char pop1 = rightStack.pop(); leftStack.push(pop1); break; case "B": if(leftStack.empty() == -1){ break; } leftStack.pop(); break; case "P" : char ch = st.nextToken().charAt(0); leftStack.push(ch); break; default: break; } } while(leftStack.empty() != -1){ rightStack.push(leftStack.pop()); } while(rightStack.empty() != -1){ sb.append(rightStack.pop()); } System.out.print(sb); } }
'PS' 카테고리의 다른 글
Java 2164 카드2 (0) 2023.05.02 Java 10845 큐 (0) 2023.05.02 Java 1874 스택 수열 (0) 2023.05.01 Java 9093 단어 뒤집기 (0) 2023.05.01 Java 10828 스택 (0) 2023.04.29