Deep_Dev

๋ฌธ์ž์—ด ํญ๋ฐœ

๋ฌธ์ œ

์ƒ๊ทผ์ด๋Š” ๋ฌธ์ž์—ด์— ํญ๋ฐœ ๋ฌธ์ž์—ด์„ ์‹ฌ์–ด ๋†“์•˜๋‹ค. ํญ๋ฐœ ๋ฌธ์ž์—ด์ด ํญ๋ฐœํ•˜๋ฉด ๊ทธ ๋ฌธ์ž๋Š” ๋ฌธ์ž์—ด์—์„œ ์‚ฌ๋ผ์ง€๋ฉฐ, ๋‚จ์€ ๋ฌธ์ž์—ด์€ ํ•ฉ์ณ์ง€๊ฒŒ ๋œ๋‹ค.

ํญ๋ฐœ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณผ์ •์œผ๋กœ ์ง„ํ–‰๋œ๋‹ค.

  • ๋ฌธ์ž์—ด์ด ํญ๋ฐœ ๋ฌธ์ž์—ด์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ์—, ๋ชจ๋“  ํญ๋ฐœ ๋ฌธ์ž์—ด์ด ํญ๋ฐœํ•˜๊ฒŒ ๋œ๋‹ค. ๋‚จ์€ ๋ฌธ์ž์—ด์„ ์ˆœ์„œ๋Œ€๋กœ ์ด์–ด ๋ถ™์—ฌ ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด์„ ๋งŒ๋“ ๋‹ค.
  • ์ƒˆ๋กœ ์ƒ๊ธด ๋ฌธ์ž์—ด์— ํญ๋ฐœ ๋ฌธ์ž์—ด์ด ํฌํ•จ๋˜์–ด ์žˆ์„ ์ˆ˜๋„ ์žˆ๋‹ค.
  • ํญ๋ฐœ์€ ํญ๋ฐœ ๋ฌธ์ž์—ด์ด ๋ฌธ์ž์—ด์— ์—†์„ ๋•Œ๊นŒ์ง€ ๊ณ„์†๋œ๋‹ค.

์ƒ๊ทผ์ด๋Š” ๋ชจ๋“  ํญ๋ฐœ์ด ๋๋‚œ ํ›„์— ์–ด๋–ค ๋ฌธ์ž์—ด์ด ๋‚จ๋Š”์ง€ ๊ตฌํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ๋‚จ์•„์žˆ๋Š” ๋ฌธ์ž๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ์ด๋•Œ๋Š” "FRULA"๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

ํญ๋ฐœ ๋ฌธ์ž์—ด์€ ๊ฐ™์€ ๋ฌธ์ž๋ฅผ ๋‘ ๊ฐœ ์ด์ƒ ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ๋ฌธ์ž์—ด์ด ์ฃผ์–ด์ง„๋‹ค. ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋Š” 1๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 1,000,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค.

๋‘˜์งธ ์ค„์— ํญ๋ฐœ ๋ฌธ์ž์—ด์ด ์ฃผ์–ด์ง„๋‹ค. ๊ธธ์ด๋Š” 1๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 36๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค.

๋‘ ๋ฌธ์ž์—ด์€ ๋ชจ๋‘ ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž์™€ ๋Œ€๋ฌธ์ž, ์ˆซ์ž 0, 1, ..., 9๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ๋ชจ๋“  ํญ๋ฐœ์ด ๋๋‚œ ํ›„ ๋‚จ์€ ๋ฌธ์ž์—ด์„ ์ถœ๋ ฅํ•œ๋‹ค.

 


์ฒ˜์Œ์— ๋ฌธ์ œ๋ฅผ ์ž˜ ๋ชป์ดํ•ดํ•ด์„œ.. ํญ๋ฐœ ๋ฌธ์ž์—ด์ด๋ž‘ ๊ฐ™์€ ๋ฌธ์ž์›์†Œ๋“ค์„ ๋ชจ๋‘ ์ œ๊ฑฐํ–ˆ๋Š”๋ฐ 

์ด๋Ÿฌ๋ฉด ์ผ๋‹จ ๋ฌธ์ œ ์ดํ•ด๋ฅผ ์ž˜๋ชปํ•ด์„œ ํ‹€๋ฆฐ๊ฑฐ๊ณ  ..

 

๊ทธ์ดํ›„์— ํ’€ ๋•Œ๋Š” ์‹œ๊ฐ„์ดˆ๊ณผ๋‚˜ ๋ฉ”๋ชจ๋ฆฌ์ดˆ๊ณผ๋ฅผ ์œ ์˜ํ•ด์„œ ํ’€์–ด์•ผํ•œ๋‹ค..

ํ‘ธ๋Š” ๋ฐฉ์‹์€ Stack์„ ์ด์šฉํ•˜๊ฑฐ๋‚˜ StringBuilder ์ด์šฉ์ธ๋ฐ, ๋ฉ”๋ชจ๋ฆฌ์ ์œผ๋กœ StringBuilder๋ฅผ ์ด์šฉํ•˜๋Š”๊ฒŒ ํ›จ์”ฌ ํšจ์œจ์ ์ด๋‹ค.

 

import java.util.*;

class Main {
    public static void main(String args[]) throws Exception {
        Scanner kb = new Scanner(System.in);
        String a = kb.next(); // ๊ธฐ๋ณธ ๋ฌธ์ž์—ด
        String b = kb.next(); // ํญ๋ฐœ ๋ฌธ์ž์—ด

        StringBuilder sb = new StringBuilder();
        Stack<Character> stack = new Stack<>();

        for (int i=0; i<a.length(); i++){
            stack.push(a.charAt(i));
            // ์Šคํƒ์˜ ์‚ฌ์ด์ฆˆ๊ฐ€ ํญ๋ฐœ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ณด๋‹ค ๊ธธ๋ฉด
            // ํญ๋ฐœ ๋ฌธ์ž์—ด์ด ์กด์žฌํ•  ์ˆ˜ ์žˆ์Œ
            if(stack.size()>=b.length()){
                boolean isSame=true;
                // ํญ๋ฐœ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋งŒํผ ๋ฐ˜๋ณต
                for(int j=0; j<b.length(); j++){
                    // ์Šคํƒ์˜ ๊ธธ์ด - ํญ๋ฐœ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ ๋นผ๊ณ  ๊ฑฐ๊ธฐ์„œ๋ถ€ํ„ฐ ์‹œ์ž‘
                    // ํญ๋ฐœ ๋ฌธ์ž์—ด๊ณผ ๋‹ค๋ฅด๋ฉด ํƒˆ์ถœ
                    if(stack.get(stack.size()-b.length()+j)!=b.charAt(j)){
                        isSame=false;
                        break;
                    }
                }
                if(isSame){
                    for(int j=0; j<b.length(); j++)
                        stack.pop();
                }
            }
        }
        for(char ch:stack){
            sb.append(ch);
        }

        System.out.println(sb.length()>0?sb.toString():"FRULA");
    }
}