728x90
210924
배열로 하면 시간 더 단축 가능 +
stack안쓰고 배열로 풀긴 했는데 result값은 StringBuilder로 했음
result 마저도 StringBuilder로 하지 말고 배열로 하면 시간 더 단축 가능
bombStr 일치할 경우에는 index를 bombStr.length()-1의 값만큼 index를 빼주면 된다..
delete할 필요 없음
참고 : https://www.acmicpc.net/source/33187159
시간초과
Line:41
for (Character character : st) {
System.out.println(character);
}
->
StringBuilder sBuilder = new StringBuilder();
for (Character character : st) {
sBuilder.append(character);
}
시간 더 단축
Stack -> Array (쓸데없는 pop()을 안해주고 index만 바꿔서 이렇게 되는 것 같음)
참고 : https://www.acmicpc.net/source/33187159
배열로 바꾸는 것은 실패해서 포기.. 너무 디테일하게 다 해줘야함
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Stack;
public class Main {
private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
private static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
public static void main(String[] args) throws IOException{
String inputStr = br.readLine();
String bombStr = br.readLine();
char trigger = bombStr.charAt(bombStr.length()-1);
Stack<Character> st = new Stack<>();
Loop1:
for(int i=0; i<inputStr.length(); i++) {
char curr = inputStr.charAt(i);
st.push(curr);
if(st.peek()==trigger && st.size()>=bombStr.length()) {
for(int j=0; j<bombStr.length(); j++) {
if(st.get(st.size()-1-j)
!= bombStr.charAt(bombStr.length()-1-j)) {
continue Loop1;
}
}
for(int j=0; j<bombStr.length(); j++) {
st.pop();
}
}
}
if(st.isEmpty()) System.out.println("FRULA");
StringBuilder sBuilder = new StringBuilder();
for (Character character : st) {
sBuilder.append(character);
}
System.out.println(sBuilder.toString());
// 완전탐색 이렇게 하면 시간초과
/*String inputStr = br.readLine();
String bombStr = br.readLine();
int prevLeng = 0;
while(true) {
prevLeng = inputStr.length();
inputStr = inputStr.replaceAll(bombStr,"");
if(prevLeng==inputStr.length()) break;
}
inputStr = (inputStr.equals(""))? "FRULA" : inputStr;
System.out.println(inputStr);*/
// bw.write("");
// bw.flush();
// bw.close();
}
// private static int stoi(String input) {
// return Integer.parseInt(input);
// }
}
|
cs |
'알고리즘 풀이 > 백준' 카테고리의 다른 글
[백준][Java] 1786번 찾기 (문자열, KMP) (0) | 2021.09.21 |
---|---|
[백준][Java] 5052번 전화번호 목록 (문자열) (0) | 2021.09.20 |
[백준][Java] 1212번 8진수 2진수 (문자열) (0) | 2021.09.20 |
[백준][Java] 11656번 접미사 배열 (문자열) (0) | 2021.09.20 |
[백준][Java] 10610번 30 (문자열) (0) | 2021.09.20 |