π [λ°±μ€μκ³ λ¦¬μ¦ νμ΄] Q.9935 λ¬Έμμ΄ νλ° λ¬Έμ νμ΄ - java
π λ¬Έμ
https://www.acmicpc.net/problem/9935
μκ·Όμ΄λ λ¬Έμμ΄μ νλ° λ¬Έμμ΄μ μ¬μ΄ λμλ€. νλ° λ¬Έμμ΄μ΄ νλ°νλ©΄ κ·Έ λ¬Έμλ λ¬Έμμ΄μμ μ¬λΌμ§λ©°, λ¨μ λ¬Έμμ΄μ ν©μ³μ§κ² λλ€.
νλ°μ λ€μκ³Ό κ°μ κ³Όμ μΌλ‘ μ§νλλ€.
- λ¬Έμμ΄μ΄ νλ° λ¬Έμμ΄μ ν¬ν¨νκ³ μλ κ²½μ°μ, λͺ¨λ νλ° λ¬Έμμ΄μ΄ νλ°νκ² λλ€. λ¨μ λ¬Έμμ΄μ μμλλ‘ μ΄μ΄ λΆμ¬
μλ‘μ΄ λ¬Έμμ΄μ λ§λ λ€.
- μλ‘ μκΈ΄ λ¬Έμμ΄μ νλ° λ¬Έμμ΄μ΄ ν¬ν¨λμ΄ μμ μλ μλ€.
- νλ°μ νλ° λ¬Έμμ΄μ΄ λ¬Έμμ΄μ μμ λκΉμ§ κ³μλλ€.
μκ·Όμ΄λ λͺ¨λ νλ°μ΄ λλ νμ μ΄λ€ λ¬Έμμ΄μ΄ λ¨λμ§ κ΅¬ν΄λ³΄λ €κ³ νλ€. λ¨μμλ λ¬Έμκ° μλ κ²½μ°κ° μλ€. μ΄λλ βFRULAβλ₯Ό μΆλ ₯νλ€.
νλ° λ¬Έμμ΄μ κ°μ λ¬Έμλ₯Ό λ κ° μ΄μ ν¬ν¨νμ§ μλλ€.
μ λ ₯
첫째 μ€μ λ¬Έμμ΄μ΄ μ£Όμ΄μ§λ€. λ¬Έμμ΄μ κΈΈμ΄λ 1λ³΄λ€ ν¬κ±°λ κ°κ³ , 1,000,000λ³΄λ€ μκ±°λ κ°λ€.
λμ§Έ μ€μ νλ° λ¬Έμμ΄μ΄ μ£Όμ΄μ§λ€. κΈΈμ΄λ 1λ³΄λ€ ν¬κ±°λ κ°κ³ , 36λ³΄λ€ μκ±°λ κ°λ€.
λ λ¬Έμμ΄μ λͺ¨λ μνλ²³ μλ¬Έμμ λλ¬Έμ, μ«μ 0, 1, β¦, 9λ‘λ§ μ΄λ£¨μ΄μ Έ μλ€.
μΆλ ₯
첫째 μ€μ λͺ¨λ νλ°μ΄ λλ ν λ¨μ λ¬Έμμ΄μ μΆλ ₯νλ€.
π μ κ·Όλ²
λ¬Έμμ΄ νλ° λ¬Έμ μ λλ€.
ν νΈλ¦¬μ€λ₯Ό μ°μμν€λ λ¬Έμ μ λλ€.
λΉκ΅ λμμΈ λ¬Έμμ΄μ ννλλ λ¬Έμμ΄μ΄ μμΌλ©΄
ν΄λΉ ννλλ λ¬Έμμ΄μ΄ μ¬λΌμ§λλ° ννλλ λ¬Έμμ΄μ΄ μ¬λΌμ§κ³ λμ
λ€μ ννλλ λ¬Έμμ΄μ΄ λ§λ€μ΄μ§ μλ μμ΅λλ€. ν΄λΉ κ²½μ°μλ
ννλ₯Ό μν€λ©° λ°λ³΅ν©λλ€.
μ€νμ μ΄μ©νμ¬ νμ΄ν μ μμ΅λλ€.
μ€νμ μ΄μ©ν΄ λΉκ΅ λ¬Έμμ΄μ λ¬Έμλ₯Ό νλνλ μμ΅λλ€.
κ·Έλ¬λ€ μλ‘ μμ λ¬Έμκ° νν λ¬Έμμ΄μ λ§μ§λ§ λ¬Έμμ κ°λ€λ©΄
μ΄λ νν λ¬Έμμ΄μ κ°λ₯μ±μ΄ μμΌλ―λ‘
νν λ¬Έμμ΄λ§νΌ popμΌλ‘ κΊΌλ΄μ tempStack μ μμμ€λλ€.
λ¨ νν λ¬Έμμ΄κ³Ό λΉκ΅νλ©° μμμ€λλ€.
νν λ¬Έμμ΄μ ν΄λΉμ΄ λλ€λ©΄ κ·Έλλ‘ ννμμΌ μμ μν€κ³
νν λ¬Έμμ΄μ ν΄λΉ λμ§ μλλ€λ©΄ tempStackμ μλ κ²μ
λ€μ stackμ μμμ€λλ€.
μ΄λ° κ³Όμ μ ν΅ν΄ λ΅μ ꡬν μ μμ΅λλ€.
π» μ½λ
package problem.stack;
import java.io.*;
import java.util.Stack;
public class Main_9935 {
static String s;
static String bombString;
static Stack<Character> stack;
static Stack<Character> tempStack;
static StringBuilder sb;
static BufferedWriter bw;
public static void main(String[] args) throws IOException {
bw = new BufferedWriter(new OutputStreamWriter(System.out));
input();
solve();
bw.flush();
bw.close();
}
static void input() throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
s = br.readLine();
bombString = br.readLine();
br.close();
}
static void solve() throws IOException {
int lastIndex = bombString.length()-1;
stack = new Stack<>();
for(int i=0; i<s.length(); i++){
char currentChar = s.charAt(i);
stack.push(currentChar);
if(currentChar == bombString.charAt(lastIndex) && stack.size() >= bombString.length()) {
tempStack = new Stack<>();
for (int j = 0; j < bombString.length(); j++) {
char temp = stack.pop();
if (temp != bombString.charAt(bombString.length() - 1 - j)) {
stack.push(temp);
while (!tempStack.isEmpty()){
stack.push(tempStack.pop());
}
break;
}
tempStack.push(temp);
}
}
}
sb = new StringBuilder();
while (!stack.isEmpty()){
sb.append(stack.pop());
}
if(sb.length()==0){
bw.write("FRULA");
}
bw.write(sb.reverse().toString());
}
}