๐ ๏ธ ๋ฌธ์ ๐ ๏ธ
๐๏ธ ์ค๋ช ๐๏ธ
์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ ๋ฌธ์์ด์ ๊ธธ์ด๋ ํฌ์ง ์๊ณ ์ฐ์ฐ๋ ๊ฐ๋จํด์ ์๋์ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ฑํ๋ค.
public static int solve(String s, String t) {
if(s.length() == t.length()) {
if(s.equals(t)) return 1;
return 0;
}
String s1 = s + "A";
String s2 = new StringBuffer(s + "B").reverse().toString();
if(solve(s1, t) == 1 || solve(s2, t) == 1) return 1;
return 0;
}
๋ฌธ์์ด s์ ์ฐ์ฐ์ ํด๋์๊ฐ๋ฉฐ ๋ฌธ์์ด t์ ๊ฐ์์ง๋์ง ํ์ธํ๋ค.
ํ์ง๋ง ๊ฒฐ๊ณผ๋ ์๊ฐ์ด๊ณผ๊ฐ ๋ด๋ค.
์์ ๊ฐ์ด ํ์ด๋ฅผ ํ ๊ฒฝ์ฐ s์์ t๊น์ง ์ฐพ์๊ฐ๋ ๊ฒฝ์ฐ์ ์๊ฐ ๊ธฐํ๊ธ์์ ์ผ๋ก ๋์ด๋ ์ ์๋ค.
๊ทธ๋ฆผ์์์ ๊ฐ์ด s์ ๊ธธ์ด๊ฐ 1์ด๊ณ t์ ๊ธธ์ด๊ฐ 4์ผ ๊ฒฝ์ฐ s์ ๊ธธ์ด๊ฐ 4๊ฐ ๋ 8๊ฐ์ง ๋ฐฉ๋ฒ์ด ์กด์ฌํ๋ค.
๋ด๊ฐ ํผ ๋ฐฉ์์ 8๋ฒ ๋ชจ๋ ํ์ํ ํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ ์ ์์ ๊ฒ์ด๋ค.
์ฆ, n (t์ ๊ธธ์ด - s์ ๊ธธ์ด) ์ด๋ผ๊ณ ํ ๋ ํ์ํ๋ ๊ฒฝ์ฐ์ ์๋ 2^n ์ผ๋ก ๊ธฐํ๊ธ์์ ์ผ๋ก ๊ฒฝ์ฐ์ ์๊ฐ ์ฆ๊ฐํ๋ค.
์๊ฐ์ด๊ณผ๊ฐ ๋๋ ์ด์ ๋ ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ํ์ธํด์ ๋ฐ์ํ ๊ฒ์ด๋ค.
๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ํ์ธํ์ง ์๊ณ ๋ ํ๋ณํ ์ ์๋ ๋ฐฉ๋ฒ์ ์๊ฐํด์ผํ๋ค.
s์ ์ฐ์ฐ์ ํด๋๊ฐ๋ฉด์ t๋ฅผ ๋ง๋ ๋ค๋ ๊ฒ์ t๋ฅผ ์ญ์ฐ์ฐ์ ์ ์ฉํด์ s๋ฅผ ๋ง๋ ๋ค๋ ๊ฒ๊ณผ ๊ฐ๋ค.
์ฆ, ๋ฐ๋๋ก ๋ฌธ์์ด t์ ์ญ์ผ๋ก ์ฐ์ฐ์ ํด์ s๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
- ๋ฌธ์์ด์ ๋ค์ A๋ฅผ ์ถ๊ฐํ๋ค. → ๋งจ๋ค์ ๋ฌธ์๊ฐ A์ผ ๊ฒฝ์ฐ ์ ๊ฑฐํ๋ค.
- ๋ฌธ์์ด์ ๋ค์ B๋ฅผ ์ถ๊ฐํ๊ณ ๋ฌธ์์ด์ ๋ค์ง๋๋ค. → ๋งจ์์ ๋ฌธ์๊ฐ B์ผ ๊ฒฝ์ฐ ์ด๋ฅผ ์ ๊ฑฐํ๊ณ ๋ค์ง๋๋ค.
์์ ์ ๋น์ทํ ๋ฌธ์ ๋ฅผ ํ์๋๋ฐ ๋๊ฐ์ด ํ๋ ค์ ์ค๋ต๋ ธํธ๋ฅผ ์์ฑํ๋ค ์๊ฐํ๊ณ ๊ธ์ ์จ๋ณด์๋ค.ใ ใ
๐ ํ์ด ๐
package Baekjoon;
import java.io.*;
public class Recursion12919 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
String t = br.readLine();
System.out.println(solve(s, t));
}
public static int solve(String s, String t) {
if(s.length() == t.length()) {
if(s.equals(t))
return 1;
return 0;
}
int answer = 0;
if(t.charAt(t.length()-1) == 'A') {
answer += solve(s, t.substring(0, t.length()-1));
}
if(t.charAt(0) == 'B') {
answer += solve(s, new StringBuffer(t.substring(1)).reverse().toString());
}
return answer > 0 ? 1 : 0;
}
}
'ProgramSolve > Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ] 13904๋ฒ - ๊ณผ์ (Java) (2) | 2024.01.05 |
---|---|
[BOJ] 31066๋ฒ - ๋น ์ค๋ ๋ (Java) (2) | 2024.01.02 |
[BOJ] 10942๋ฒ - ํฐ๋ฆฐ๋๋กฌ? (Java) (0) | 2023.12.22 |
[BOJ] 17609๋ฒ - ํ๋ฌธ (Java) (0) | 2023.12.13 |
[BOJ] 1806๋ฒ - ๋ถ๋ถํฉ (Java) (1) | 2023.12.12 |