๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
ProgramSolve/Baekjoon

[BOJ] 12919๋ฒˆ - A์™€ B 2 (Java)

by SooooooooS 2023. 12. 24.
728x90

๐Ÿ› ๏ธ ๋ฌธ์ œ ๐Ÿ› ๏ธ


๐Ÿ—’๏ธ ์„ค๋ช… ๐Ÿ—’๏ธ

์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง€๋Š” ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋„ ํฌ์ง€ ์•Š๊ณ  ์—ฐ์‚ฐ๋„ ๊ฐ„๋‹จํ•ด์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๋‹ค.

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;
    }
}
728x90