์•Œ๊ณ ๋ฆฌ์ฆ˜(JAVA)

๋ฐฑ์ค€ 9935 "๋ฌธ์ž์—ด ํญ๋ฐœ" (JAVA)

5jeong 2025. 2. 16. 20:41

๐Ÿ” ๋ฌธ์ œ๋งํฌ

https://www.acmicpc.net/problem/9935


๐Ÿ“Œ ๋ฌธ์ œ ์š”์•ฝ

  • ๋ฌธ์ž์—ด S์—์„œ ํŠน์ • ํญ๋ฐœ ๋ฌธ์ž์—ด B๊ฐ€ ์—ฐ์†์œผ๋กœ ๋“ฑ์žฅํ•˜๋ฉด ์ œ๊ฑฐ.
  • ์ œ๊ฑฐ ํ›„ ๋‚จ์€ ๋ฌธ์ž์—ด์„ ๋‹ค์‹œ ๊ฒ€์‚ฌํ•˜์—ฌ ๋ฐ˜๋ณต์ ์œผ๋กœ ํญ๋ฐœ.
  • ์ตœ์ข…์ ์œผ๋กœ ๋‚จ์€ ๋ฌธ์ž์—ด์ด ์—†๋‹ค๋ฉด "FRULA" ์ถœ๋ ฅ.

๐Ÿ›  ํ’€์ด ๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜

  1. ๋ฌธ์ž ํ•˜๋‚˜์”ฉ StringBuilder์— ์ถ”๊ฐ€
    • ํญ๋ฐœ ๋ฌธ์ž์—ด์ด ํ˜•์„ฑ๋  ๊ฒฝ์šฐ ์ฆ‰์‹œ ์‚ญ์ œ.
    • ๋’ค์—์„œ bombStr.length() ๋งŒํผ ๊ฒ€์‚ฌํ•˜์—ฌ ํญ๋ฐœ ๋ฌธ์ž์—ด์ด ์žˆ์œผ๋ฉด ์ œ๊ฑฐ.
  2. ์‹œ๊ฐ„ ์ตœ์ ํ™”
    • String์„ ์‚ฌ์šฉํ•˜๋ฉด O(N^2) ์ด์ƒ์˜ ๋ณต์žก๋„๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, StringBuilder๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฌธ์ž์—ด ์ˆ˜์ • ์ตœ์ ํ™” (O(N)).

๐Ÿ’ก ์ฝ”๋“œ

public class Baekjoon_9935 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        String str = sc.next();
        String bombStr = sc.next();
        int len = bombStr.length();
        StringBuilder sb = new StringBuilder();

        for (int i = 0; i < str.length(); i++) {

            sb.append(str.charAt(i));

            // ํญํƒ„ ๋ฌธ์ž์—ด์ด ํ˜„์žฌ ๋„ฃ๋Š” ๋ฌธ์ž์—ด ๊ธฐ์ค€์œผ๋กœ ๊ฐ™์œผ๋ฉด ์‚ญ์ œ
            if (sb.length() >= len && sb.substring(sb.length() - len).equals(bombStr)) {
                sb.delete(sb.length() - len, sb.length());
            }
        }
        System.out.println(sb.isEmpty() ? "FRULA" : sb.toString());
    }

}

๐Ÿ† ์‹œ๊ฐ„ ๋ณต์žก๋„ ๋ถ„์„

  • ๋ฌธ์ž์—ด์„ ํ•œ ๋ฒˆ ์ˆœํšŒ (O(N)).
  • ํญ๋ฐœ ๋ฌธ์ž์—ด ์ฒดํฌ ์‹œ substring()์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ O(1).
  • ์ตœ์ข… ์‹œ๊ฐ„ ๋ณต์žก๋„ O(N) + O(1) = O(N)