- 코드
성공 코드 : stack을 써서 풀으면 될 것 같아서 stack을 문자열 뒤에서부터 넣어주면서 폭발시켜야될 문자열이 들어오면
폭발 시킨다. 처음 stack을 써봐서 좀 헤매긴했는데, 라이브러리로 stack기능을 바로 쓰게 해줘서 편했다..
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Stack;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Stack<Character> stack = new Stack<Character> ();
String BombedString = br.readLine();
String bombString = br.readLine();
for(int i = BombedString.length() - 1; i >= 0; i--){
stack.push(BombedString.charAt(i));
if(stack.size() >= bombString.length() && stack.peek() == bombString.charAt(0)){
boolean isBomb = true;
for(int j = 1; j < bombString.length(); j++){
if(stack.get(stack.size()-j-1) != bombString.charAt(j)){
isBomb = false;
break;
}
}
if(isBomb){
for(int j = 0; j < bombString.length(); j++)
stack.pop();
}
}
}
int stackSize = stack.size();
StringBuilder sb = new StringBuilder();
if(stack.isEmpty()){
System.out.println("FRULA");
}else{
for(int i = 0; i < stackSize; i++) sb.append(stack.pop());
}
System.out.println(sb);
}
}
다른 사람 코드 : 나보다 시간이 두배 더 빠르다. 코드가 기능별로 메소드로 정리해서 보기 좋고 잘 정리되어 있는 느낌.
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
String bomb = br.readLine();
String answer = solution(str, bomb);
System.out.println((answer.length() == 0) ? "FRULA" : answer);
}
private static String solution(String str, String bomb) {
char[] result = new char[str.length()];
int idx = 0;
for (int i = 0; i < str.length(); i++) {
result[idx] = str.charAt(i);
if (isBomb(result, idx, bomb)) idx -= bomb.length();
idx++;
}
return String.valueOf(result, 0, idx);
}
private static boolean isBomb(char[] result, int idx, String bomb) {
if (idx < bomb.length() - 1) return false;
for (int i = 0; i < bomb.length(); i++) {
if (bomb.charAt(i) != result[idx - bomb.length() + 1 + i]) return false;
}
return true;
}
}
'algorithm' 카테고리의 다른 글
[JAVA] 백준 1629번 : 곱셈 (0) | 2020.08.24 |
---|---|
[JAVA] 백준 9613번 : GCD 합 (0) | 2020.08.24 |
[JAVA] 백준 1912번 : 연속합 (0) | 2020.08.21 |
[JAVA] 백준 10942번 : 팰린드롬? (0) | 2020.08.21 |
[JAVA] 백준 1747번 : 소수&팰린드롬 (0) | 2020.08.20 |