์๊ณ ๋ฆฌ์ฆ(JAVA)
๋ฐฑ์ค 9935 "๋ฌธ์์ด ํญ๋ฐ" (JAVA)
5jeong
2025. 2. 16. 20:41
๐ ๋ฌธ์ ๋งํฌ
https://www.acmicpc.net/problem/9935
๐ ๋ฌธ์ ์์ฝ
- ๋ฌธ์์ด S์์ ํน์ ํญ๋ฐ ๋ฌธ์์ด B๊ฐ ์ฐ์์ผ๋ก ๋ฑ์ฅํ๋ฉด ์ ๊ฑฐ.
- ์ ๊ฑฐ ํ ๋จ์ ๋ฌธ์์ด์ ๋ค์ ๊ฒ์ฌํ์ฌ ๋ฐ๋ณต์ ์ผ๋ก ํญ๋ฐ.
- ์ต์ข ์ ์ผ๋ก ๋จ์ ๋ฌธ์์ด์ด ์๋ค๋ฉด "FRULA" ์ถ๋ ฅ.
๐ ํ์ด ๋ฐ ์๊ณ ๋ฆฌ์ฆ
- ๋ฌธ์ ํ๋์ฉ StringBuilder์ ์ถ๊ฐ
- ํญ๋ฐ ๋ฌธ์์ด์ด ํ์ฑ๋ ๊ฒฝ์ฐ ์ฆ์ ์ญ์ .
- ๋ค์์ bombStr.length() ๋งํผ ๊ฒ์ฌํ์ฌ ํญ๋ฐ ๋ฌธ์์ด์ด ์์ผ๋ฉด ์ ๊ฑฐ.
- ์๊ฐ ์ต์ ํ
- 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)