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 형태의 비지니스 구축 기 음성 플랫폼...
-
개발자 컨퍼런스같은 것도 방문한게 언제인지 까마득합니다. 코로나로 왠지 교류가 많이 없어졌습니다. 패스트캠퍼스로부터 좋은 기회를 얻어 강연을 하나 오픈하였습니다. 제가 강연에서 주로 다룰 내용은, 인터넷 역사 이래 발전해온 서버 사이드 기술들에 대해 ...
No comments:
Post a Comment