간단해 보이는 문제였지만 어떤 식으로 구현할지 고민이 많이 되는 문제였다.
슬라이딩 윈도우를 적용하는 방법도 생각해봤지만 이미 합친 문자열을 나누는 게 쉽지 않았다.
조금만 고민하면 금방 풀 것 같은 느낌이여서 한 시간을 넘게 이것저것 시도해보다
검색해서 힌트를 얻었다.
Stack을 이용해서 문자열을 하나씩 넣은후 탐색하는 방법인데 비슷하게는 생각했었지만
막상 코드로 구현하려니 쉽지 않았다. 간단해 보이지만 혼자서 생각했다면 몇 시간을 고민했어도
성공했을지는 잘 모르겠다.
유형별로 돌려가며 풀어야겠다.
최종 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
String bomb = br.readLine();
Stack<Character> stack = new Stack<>();
StringBuilder sb = new StringBuilder();
// 스택에 문자 하나씩 삽입
for (int i = 0; i < s.length(); i++) {
stack.push(s.charAt(i));
// 스택의 길이가 폭탄보과 같거나 크면 탐색
if(stack.size() >= bomb.length()) {
boolean flag = true;
for (int j = 0; j < bomb.length(); j++) {
if(stack.get(stack.size() - bomb.length() + j) != bomb.charAt(j)) {
flag = false;
break;
}
}
if(flag) {
for (int j = 0; j < bomb.length(); j++) {
stack.pop();
}
}
}
}
for(char c : stack) {
sb.append(c);
}
System.out.println(sb.length() == 0 ? "FRULA" : sb.toString());
}
}
'코딩 테스트' 카테고리의 다른 글
(Java) 프로그래머스 - 괄호 회전하기 (0) | 2022.08.01 |
---|---|
(Java) 백준 11725 - 트리의 부모 찾기 (0) | 2022.08.01 |
(Java) 백준 1991 - 트리 순회 (0) | 2022.07.28 |
(Java) 프로그래머스 - 전력망을 둘로 나누기 (0) | 2022.07.27 |
(Java) 프로그래머스 - 후보키 (0) | 2022.07.26 |