문제 출처 : https://www.acmicpc.net/problem/9935
문제 :
풀이 :
스택과 StringBuilder를 이용해 문제를 해결하였다.
소스코드 :
import java.util.*;
import java.io.*;
public class Main {
public StringBuilder solution(String str, String boom) {
StringBuilder sb = new StringBuilder();
Stack<Character> stack = new Stack<>();
char[] strChar = str.toCharArray();
char[] boomChar = boom.toCharArray();
for(int i=0; i<str.length(); i++) {
stack.push(strChar[i]);
if (stack.size() >= boom.length()) {
int cnt = 0;
for(int j=0; j<boom.length(); j++) {
if (boomChar[j] != stack.get(stack.size() - boom.length() + j)) {
cnt = 0;
break;
}
cnt++;
}
if (cnt == boom.length()) {
for(int k=0; k<cnt; k++) {
stack.pop();
}
cnt = 0;
}
}
}
if(stack.isEmpty()) {
sb.append("FRULA");
}
else for(char x : stack) sb.append(x);
return sb;
}
public static void main(String[] args) throws IOException {
Main T = new Main();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String str = br.readLine();
String boom = br.readLine();
br.close();
System.out.println(T.solution(str, boom));
//bw.write(String.valueOf(T.solution(str, boom)));
//bw.flush();
//bw.close();
}
}
쉬워보였는데 생각보다 오래걸렸다.
스택을 아직 잘 활용 못하겠다. 많이 연습하자
'Java 코딩테스트 공부 > Java 백준 문제풀이' 카테고리의 다른 글
자바 백준 1991번 문제 : 트리 순회 (0) | 2022.11.14 |
---|---|
자바 백준 17298번 문제 : 오큰수 (0) | 2022.11.11 |
자바 백준 2470번 문제 : 두 용액 (0) | 2022.11.08 |
자바 백준 5430번 문제 : AC (0) | 2022.11.07 |
자바 백준 18870번 문제 : 좌표 압축 (0) | 2022.11.07 |