[백준 9935] 문자열 폭발 (JAVA)
문제
풀이
스택을 이용하면 쉽게 해결할 수 있습니다.
폭발 문자열의 끝 부분과 같은 문자가 스택에 들어오면 확인 후 일치하면 일치하는 부분만 스택에서 제거하고 다시 문자를 스택에 넣는 것을 반복합니다.
코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
char[] input = br.readLine().toCharArray();
char[] bomb = br.readLine().toCharArray();
char check = bomb[bomb.length - 1];
Stack stack = new Stack(input.length);
for (char c : input) {
stack.push(c);
if (c == check && stack.size() >= bomb.length) {
stack.check(bomb);
}
}
if (stack.size() == 0) {
sb.append("FRULA");
} else {
for (int i = 0; i < stack.size(); i++) {
sb.append(stack.arr[i]);
}
}
System.out.println(sb);
br.close();
}
public static class Stack {
char[] arr;
int idx = 0;
public Stack(int size) {
arr = new char[size];
}
public void check(char[] bomb) {
int bIdx = bomb.length - 1;
for (int i = idx - 1; i >= idx - bomb.length; i--) {
if (arr[i] != bomb[bIdx--]) return;
}
idx = idx - bomb.length;
}
public int size() {
return idx;
}
public void push(char c) {
arr[idx++] = c;
}
public char peek() {
return arr[idx-1];
}
public char pop() {
return arr[--idx];
}
}
}
Author And Source
이 문제에 관하여([백준 9935] 문자열 폭발 (JAVA)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@solser12/백준-9935-문자열-폭발-JAVA저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)