๋ฐฑ์ค 9935 ๋ฌธ์์ด ํญ๋ฐ
๊ณจ๋ 4
์ฃผ์ด์ง ๋ฌธ์์ด์์ ํญ๋ฐ ๋ฌธ์์ด(bomb) ์ด ๋ฑ์ฅํ ๋๋ง๋ค ์ฆ์ ์ ๊ฑฐํด์ผ ํ๋ค.
ํญ๋ฐ ๋ฌธ์์ด์ด ์ ๊ฑฐ๋๋ฉด ์์ชฝ ๋ฌธ์์ด์ด ํฉ์ณ์ง๊ณ , ํฉ์ณ์ง ๋ฌธ์์ด์์๋ ๋ค์ ํญ๋ฐ ๋ฌธ์์ด์ด ๋ฑ์ฅํ ์ ์๋ค.
๋ชจ๋ ํญ๋ฐ์ด ๋๋ ํ ๋จ์ ๋ฌธ์์ด์ ์ถ๋ ฅํ๋ฉฐ, ์๋ฌด ๋ฌธ์๋ ๋จ์ง ์์ผ๋ฉด "FRULA" ๋ฅผ ์ถ๋ ฅํ๋ค.
"FRULA"๋ฌธ์ ๋ฅผ ๋ณด์์ ๋๋ ๋ฐฐ์ด์ด๋ ๋ฆฌ์คํธ์์ ๋ฃ์ด์ ํญ๋ฐ ๋ฌธ์์ด์ด ์๋์ง๋ฅผ ๋ฐ๋ณตํด์ ์ํํ๋ ๋ฐฉ๋ฒ๋ฐ์ ๋ ์ค๋ฅด์ง ์์๋ค.
๊ทธ๋ฌ๋ ๋ฌธ์์ด์ ๊ธธ์ด๊ฐ ์ต๋ ๋ฐฑ๋ง๊ฐ์ด๊ธฐ ๋๋ฌธ์ ๋ฐฐ์ด์ ๋๋ฒ๋ง ๋์๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํฐ์ ธ๋ฒ๋ฆด ๊ฒ์ด๋ค.
์ด ๋ฌธ์ ๋ฅผ ์คํ์ ์ด์ฉํด์ ํจ์จ์ ์ผ๋ก ํ ์ ์๋ค.
append() ํ๋ฉด์ ์คํ์ฒ๋ผ ์๋๋ค.delete()๋ก ์ ๊ฑฐํ๋ค.์ฆ, ๋ฌธ์์ด ์ ์ฒด๋ฅผ ๋งค๋ฒ ํ์ธํ ํ์๊ฐ ์๊ณ ,
"์คํ ๋ค์์ ํ์ํ ๋งํผ๋ง ํ์ธ" ํ๋ฉด ๋๋ฏ๋ก ์๊ฐ ๋ณต์ก๋๋ ์ฌ์ค์ O(N)์ ๊ฐ๊น๋ค.
์๋ฐ์๋ ์คํ ํด๋์ค๊ฐ ์์ง๋ง ์ค๋๋์ด ํจ์จ์ฑ์ด ๋ฎ์๋ ํ๋ค.
ํด๋น ๋ฌธ์ ๋ ๋ฌธ์์ด์ด๊ธฐ ๋๋ฌธ์ StringBuilder๋ฅผ ์คํ์ฒ๋ผ ์ฌ์ฉํ ์ ์๋ค.
StringBuilder sb = new StringBuilder();
for (int i = 0 ; i < string.length();i ++) {
//ํ ๊ธ์์ฉ ๋ฃ๊ธฐ
sb.append(string.charAt(i));
์ด ์กฐ๊ฑด์ด ๋ง์กฑ๋๋ฉด ์ค์ ๋ก ํญ๋ฐ ๋ฌธ์์ด์ธ์ง ํ์ธํ๋ค.
//์ง๊ธ ๋ฃ๋ ์๊ฐ ํ๊ฒ์ ๋ง์ง๋ง๊ณผ ๊ฐ๋ค๋ฉด...
if (string.charAt(i) == target.charAt(target.length() - 1) && sb.length() >= target.length()) {
boolean match = true;
for (int j = 0 ; j < target.length(); j++) {
if (sb.charAt(sb.length() -1 - j) != target.charAt(target.length() - 1 - j)) {
match = false;
break;
}
}
//๋ง์ฝ์ ๋ฌธ์์ด์ด ๊ฐ๋ค๋ฉด ํญ๋ฐ ์ง
if (match) {
sb.delete(sb.length() - target.length(), sb.length());
}
}
}
if (sb.length() == 0 ) {
System.out.println("FRULA");
} else {
System.out.println(sb);
}
package Algorithm;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class backjoon_๋ฌธ์์ดํญ๋ฐ {
public static void main(String[] args) throws FileNotFoundException {
// ์
๋ ฅ๊ฐ ๋ฐ๊ธฐ
System.setIn(new FileInputStream("src/input.txt"));
Scanner sc = new Scanner(System.in);
String string = sc.next();
String target = sc.next();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < string.length(); i++) {
// ํ ๊ธ์์ฉ ๋ฃ๊ธฐ
sb.append(string.charAt(i));
System.out.println("์ถ๊ฐ ํ : " + sb);
// ์ง๊ธ ๋ฃ๋ ์๊ฐ ํ๊ฒ์ ๋ง์ง๋ง๊ณผ ๊ฐ๋ค๋ฉด...
if (string.charAt(i) == target.charAt(target.length() - 1) && sb.length() >= target.length()) {
boolean match = true;
for (int j = 0; j < target.length(); j++) {
if (sb.charAt(sb.length() - 1 - j) != target.charAt(target.length() - 1 - j)) {
match = false;
break;
}
}
// ๋ง์ฝ์ ๋ฌธ์์ด์ด ๊ฐ๋ค๋ฉด ํญ๋ฐ ์ง
if (match) {
sb.delete(sb.length() - target.length(), sb.length());
}
}
}
if (sb.length() == 0) {
System.out.println("FRULA");
} else {
System.out.println(sb);
}
}
}