๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/12919)
<A์ B 2>
๋ฌธ์ ํ์ด
๊ตฌํํ๋ ๋ฐฉ๋ฒ์์ S์์ T๋ก ๋ณํํ ๊น T์์ S๋ก ๋ณํํ ๊น๋ฅผ ์ฒ์์ ๊ณ ๋ฏผํ๋ค.
๊ทธ๋ฌ๋ค S์์ T๋ ์๊ฐ์ด๊ณผ๊ฐ ๋ ๊น ์ถ์ด์ T์์ S๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ์ ํํ์๋ค. ๊ทธ ํ S์์ T๋ก ๋ณํํ๋ ์ฝ๋๋ ๊ตฌํํด ๋ณด์๋ค. ์ญ์๋ ์๊ฐ์ด๊ณผ์๋ค!
T์์ S๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ์
1) ๋ฌธ์์ด ๋ค์ A ์ถ๊ฐ(์๋ ์กฐ๊ฑด) -> ๋ฌธ์์ด ๋ค์ A๊ฐ ์์ผ๋ฉด A์ ๊ฑฐ ํ ๋ฃ๊ธฐ
2) ๋ฌธ์์ด์ ๋ค์ B๋ฅผ ์ถ๊ฐํ๊ณ ๋ฌธ์์ด ๋ค์ง๊ธฐ(์๋ ์กฐ๊ฑด) -> ๋ฌธ์์ด ๋งจ ์์ B๊ฐ ์์ผ๋ฉด ๋งจ ์ ๋ฌธ์์ด ๋นผ๊ณ ๋ค์ง๊ธฐ
๋ฅผ ์ฌ์ฉํ๋ค.
- my solution (Java)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
public class _12919_ { // A์ B 2
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String S = bf.readLine();
String T = bf.readLine();
Queue<String> queue = new LinkedList<>();
queue.add(T);
boolean flag = false;
while (!queue.isEmpty()) {
String temp = queue.poll();
if (temp.length() - 1 < S.length())
continue;
// ๋ฌธ์์ด ๋ค์ A ์ ๊ฑฐ
if (temp.charAt(temp.length() - 1) == 'A') {
String a = temp.substring(0, temp.length() - 1);
if (a.equals(S)) {
flag = true;
break;
}
queue.add(a);
}
// ๋งจ ์ ๋ฌธ์์ด B ์ ๊ฑฐ ํ ๋ค์ง๊ธฐ
if (temp.charAt(0) == 'B') {
String a = "";
for (int i = temp.length() - 1; i > 0; i--) {
a += temp.charAt(i);
}
if (a.equals(S)) {
flag = true;
break;
}
queue.add(a);
}
}
if (flag)
System.out.println(1);
else
System.out.println(0);
}
}
S๋ฅผ T๋ก ๋ฐ๊ฟ ์ ์๋๋ฅผ ๋ฌผ์ด๋ณด๋ ๋ฌธ์ ์ด์ง๋ง ๋ฌธ์ ํด๊ฒฐ์ T๋ฅผ S๋ก ๋ฐ๊ฟ ์ ์๋๋ก ํด๊ฒฐํ์๋ค.
T๋ฅผ S๋ก ๋ฐ๊พธ๋ ๊ฒฝ์ฐ์๋ ๋งจ ๋ค๊ฐ A์ธ์ง, ๋งจ ์์ด B์ธ์ง๋ฅผ ํตํด ๊ฐ์ง์น๊ธฐ๋ฅผ ํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
๋ง์ฝ S๋ฅผ T๋ก ๋ฐ๊พธ๋ ์ฝ๋๋ฅผ ๊ตฌํํ๋๋ผ๋ฉด ๋งจ ๋ค์ A๋ฅผ ๋ถ์ด๊ณ , ๋งจ ๋ค์ B๋ฅผ ๋ถ์ด๊ณ ๋ค์ง๊ธฐ๋ฅผ ํด๋ T ๋ฌธ์์ด์ ๊ธธ์ด๋งํผ ์์ฑํด์ผ S๋ฅผ T๋ก ๋ง๋ค ์ ์๋์ง ์ ์ ์๊ธฐ ๋๋ฌธ์ ์๊ฐ์ด๊ณผ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ด๋ค.
- S, T ์ ๋ ฅ
- queue: ๋ฌธ์์ด ์ ์ฅ
- flag: T -> S๋ก ๋ฐ๊ฟ ์ ์๋์ง check
- queue๊ฐ ๋น ๋๊น์ง ๋ฐ๋ณต
- ๋ฌธ์ ํ๋๋ฅผ ๋บ ๋ฌธ์์ด์ ๊ธธ์ด๊ฐ S์ ๊ธธ์ด๋ณด๋ค ์์ผ๋ฉด S๋ฅผ ๋ง๋ค ์ ์๊ธฐ ๋๋ฌธ์ continue
- ๋ฌธ์์ด ๋งจ ๋ค๊ฐ 'A'๋ผ๋ฉด ์ ๊ฑฐ -> ๊ทธ ๋ฌธ์์ด์ด S๋ผ๋ฉด break; S๊ฐ ์๋๋ผ๋ฉด queue์ ์ถ๊ฐ
- ๋ฌธ์์ด ๋งจ ์์ด 'B'๋ผ๋ฉด ์ ๊ฑฐ ๋ฐ ๋ค์ง๊ธฐ -> ๊ทธ ๋ฌธ์์ด์ด S๋ผ๋ฉด break; S๊ฐ ์๋๋ผ๋ฉด queue์ ์ถ๊ฐ
์๊ฐ๐ค
์์ ์ ๋น์ทํ ๋ฌธ์ ๋ฅผ ํ์๋ ๊ธฐ์ต์ด ๋์ ์ฝ๊ฒ ํด๊ฒฐํ ์ ์์๋ค.
ํ์ง๋ง ๋ค๋ฅธ ๋ฐฉ๋ฒ๋ ๋์ ํด๋ณด๊ณ ์ถ์ด ๋์ ํด๋ดค์ง๋ง ์ญ์๋ ์๊ฐ ์ด๊ณผ์๋ค.
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 16197_๋ ๋์ (0) | 2022.12.26 |
---|---|
[Baekjoon] 9019_DSLR (0) | 2022.12.23 |
[Baekjoon] 15644_๊ตฌ์ฌ ํ์ถ 3 (0) | 2022.12.21 |
[Baekjoon] 13459_๊ตฌ์ฌ ํ์ถ (0) | 2022.12.20 |
[Baekjoon] 13460_๊ตฌ์ฌ ํ์ถ 2 (0) | 2022.12.19 |