์๊ทผ์ด๋ ๋ฌธ์์ด์ ํญ๋ฐ ๋ฌธ์์ด์ ์ฌ์ด ๋์๋ค. ํญ๋ฐ ๋ฌธ์์ด์ด ํญ๋ฐํ๋ฉด ๊ทธ ๋ฌธ์๋ ๋ฌธ์์ด์์ ์ฌ๋ผ์ง๋ฉฐ, ๋จ์ ๋ฌธ์์ด์ ํฉ์ณ์ง๊ฒ ๋๋ค.
ํญ๋ฐ์ ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ผ๋ก ์งํ๋๋ค.
- ๋ฌธ์์ด์ด ํญ๋ฐ ๋ฌธ์์ด์ ํฌํจํ๊ณ ์๋ ๊ฒฝ์ฐ์, ๋ชจ๋ ํญ๋ฐ ๋ฌธ์์ด์ด ํญ๋ฐํ๊ฒ ๋๋ค. ๋จ์ ๋ฌธ์์ด์ ์์๋๋ก ์ด์ด ๋ถ์ฌ ์๋ก์ด ๋ฌธ์์ด์ ๋ง๋ ๋ค.
- ์๋ก ์๊ธด ๋ฌธ์์ด์ ํญ๋ฐ ๋ฌธ์์ด์ด ํฌํจ๋์ด ์์ ์๋ ์๋ค.
- ํญ๋ฐ์ ํญ๋ฐ ๋ฌธ์์ด์ด ๋ฌธ์์ด์ ์์ ๋๊น์ง ๊ณ์๋๋ค.
์๊ทผ์ด๋ ๋ชจ๋ ํญ๋ฐ์ด ๋๋ ํ์ ์ด๋ค ๋ฌธ์์ด์ด ๋จ๋์ง ๊ตฌํด๋ณด๋ ค๊ณ ํ๋ค. ๋จ์์๋ ๋ฌธ์๊ฐ ์๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. ์ด๋๋ "FRULA"๋ฅผ ์ถ๋ ฅํ๋ค.
ํญ๋ฐ ๋ฌธ์์ด์ ๊ฐ์ ๋ฌธ์๋ฅผ ๋ ๊ฐ ์ด์ ํฌํจํ์ง ์๋๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ๋ฌธ์์ด์ด ์ฃผ์ด์ง๋ค. ๋ฌธ์์ด์ ๊ธธ์ด๋ 1๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 1,000,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค.
๋์งธ ์ค์ ํญ๋ฐ ๋ฌธ์์ด์ด ์ฃผ์ด์ง๋ค. ๊ธธ์ด๋ 1๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 36๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค.
๋ ๋ฌธ์์ด์ ๋ชจ๋ ์ํ๋ฒณ ์๋ฌธ์์ ๋๋ฌธ์, ์ซ์ 0, 1, ..., 9๋ก๋ง ์ด๋ฃจ์ด์ ธ ์๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๋ชจ๋ ํญ๋ฐ์ด ๋๋ ํ ๋จ์ ๋ฌธ์์ด์ ์ถ๋ ฅํ๋ค.
๐ก ์คํ ์ฌ์ฉ
๐ก stack์ ๋ฌธ์์ด์ ํ๋์ฉ ๋ฃ์
๐ก stack ํฌ๊ธฐ๊ฐ bombํฌ๊ธฐ์ ๊ฐ๊ฑฐ๋ ์ปค์ง๋ฉด, bomb์ฌ์ด์ฆ๋งํผ stack์์ ๊ฐ์ ธ์์ bomb์ ๊ฐ์ ์ง ํ์
ํจ
๐ก stack์์ ๋นผ์จ ๋ฌธ์์ด์ด bomb์ ๊ฐ๋ค๋ฉด, stack์์ ์ ๊ฑฐํจ
๐ก stack์ ํฌ๊ธฐ๊ฐ 0์ด๋ฉด FRULA ์๋๋ผ๋ฉด stack์ ์๋ ๋ฌธ์์ด์ ์ถ๋ ฅํจ
s.push(str[i]);
if(s.size() >= len) {
boolean flag =true;
int tmp = s.size()-len;
for(int j=0; j<len; j++) {
if(s.get(tmp+j) != bomb.charAt(j)) {
flag = false;
break;
}
}
}
if(flag) {
for(int j=0; j<len; j++) {
s.pop();
}
}
bw.write(sb.length() > 0 ? sb.toString() : "FRULA");
import java.io.BufferedWriter;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Stack;
public class BOJ_9935 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
char[] str = br.readLine().toCharArray();
String bomb = br.readLine();
Stack<Character> s = new Stack<Character>();
int len = bomb.length();
for(int i=0; i<str.length; i++) {
s.push(str[i]);
if(s.size() >= len) {
boolean flag =true;
int tmp = s.size()-len;
for(int j=0; j<len; j++) {
if(s.get(tmp+j) != bomb.charAt(j)) {
flag = false;
break;
}
}
if(flag) {
for(int j=0; j<len; j++) {
s.pop();
}
}
}
}
for(char c : s) {
sb.append(c);
}
bw.write(sb.length() > 0 ? sb.toString() : "FRULA");
bw.flush();
bw.close();
}
}
์ฑ๊ณตโจ