https://www.acmicpc.net/problem/9935
9935번: 문자열 폭발
첫째 줄에 문자열이 주어진다. 문자열의 길이는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 둘째 줄에 폭발 문자열이 주어진다. 길이는 1보다 크거나 같고, 36보다 작거나 같다. 두 문자열은 모
www.acmicpc.net
저는 스택을 통해 문제를 해결하였습니다.
스택으로 이전의 문자들을 저장하고, 스택이 폭발 문자열의 길이보다 크다면, 위에서부터 폭발 문자열과 비교하여 같다면 스택에서 전부 빼어 문제를 풀었습니다.
package BOJ.etc;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Stack;
public class BOJ_9935 {
private static final int NOT_FOUND = -1;
private static final String EMPTY = "FRULA";
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
String bombStr = br.readLine();
Stack<Character> stack = new Stack<>();
for(int i = 0 ; i < str.length() ; i++){
char ch = str.charAt(i);
stack.add(ch);
if(stack.size() >= bombStr.length()){
boolean flag = true;
for(int j = 0 ; j < bombStr.length() ; j++){
if(stack.get(stack.size() - bombStr.length() + j) != bombStr.charAt(j)){
flag = false;
break;
}
}
if(!flag) {
continue;
}
for(int j = 0 ; j < bombStr.length() ; j++){
stack.pop();
}
}
}
if(stack.size() == 0) {
System.out.println(EMPTY);
}
StringBuilder sb = new StringBuilder();
while(!stack.isEmpty()){
sb.append(stack.pop());
}
sb = sb.reverse();
System.out.println(sb.toString());
}
}
'알고리즘' 카테고리의 다른 글
백준 11559번 Puyo Puyo (JAVA) (2) | 2023.12.03 |
---|---|
백준 15898번 피아의 아틀리에 (JAVA) (1) | 2023.12.02 |
백준 1940번 주몽 (JAVA) (1) | 2023.11.30 |
백준 7568번 덩치 (JAVA) (0) | 2023.11.29 |
백준 2343번 기타 레슨 (JAVA) (0) | 2023.11.28 |