import java.io.BufferedReader; import java.io.InputStreamReader; /* * 9935번 문자열 폭발 */ public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String input = br.readLine(); String bomb = br.readLine(); Stack s = new Stack(); for (int i = 0; i < input.length(); i++) { s.push(input.charAt(i)); if (input.charAt(i) == bomb.charAt(bomb.length() - 1)) { s.checkAndRemove(bomb); } } s.printCurrent(); br.close(); } public static class Stack { private int top = 0; private char[] stack = new char[1000003]; public void push(char x) { stack[top++] = x; } public boolean checkAndRemove(String bomb) { if (top < bomb.length()) return false; int c = 0; boolean isTrue = true; for (int i = bomb.length() - 1; i >= 0; i--) { if (bomb.charAt(i) != stack[top - 1 - c]) { isTrue = false; } c++; } if (isTrue) { top = top - bomb.length(); return true; } else { return false; } } public void printCurrent() { if(top == 0) System.out.println("FRULA"); else { StringBuilder out = new StringBuilder(); for (int i = 0; i < top; i++) { out.append(stack[i]); } System.out.println(out.toString()); } } } }
[백준 알고리즘 풀이] 9935번 문자열 폭발
기본 아이디어는 문자열을 쌓다가 대상 비교 문자열 꼬다리 캐릭터와 현재의 캐릭터가 일치할 경우 뒤에서 부터 검사한 (backwarding) 후 제거하는거다. 애니팡 연속으로 터지는걸 생각하면 쉽다. 코드에서는 Stack을 하나 구현했는데 poll 대신에 그냥 index position만 변경해주는걸로 구현했다.
Subscribe to:
Post Comments (Atom)
-
Opening the black box of Deep Neural Networks via Information - https://arxiv.org/pdf/1703.00810.pdf 지금까지 딥 러닝은 어떻게 동작하는지 이해할 수 없다고 믿어져왔다...
-
음성 인공지능 분야에서 스타트업이 생각해볼 수 있는 전략은 아마 다음과 같이 3가지 정도가 있을 것이다: 독자적 Vertical 음성 인공지능 Application 구축 기 음성 플랫폼을 활용한 B2B2C 형태의 비지니스 구축 기 음성 플랫폼...
-
As mentioned ago, I've been forming up the Hamburg project with Hyunsik Choi. Let's see more detail in the diagram of computing met...
No comments:
Post a Comment