๊ธฐ๋ก๋ฐฉ

BOJ_11068 : ํšŒ๋ฌธ์ธ ์ˆ˜ ๋ณธ๋ฌธ

CodingTest/Java

BOJ_11068 : ํšŒ๋ฌธ์ธ ์ˆ˜

Soom_1n 2024. 11. 25. 09:58

๐Ÿ‘‰ ๋ฌธ์ œ๋งํฌ



๐Ÿ”ธ ๋ฌธ์ œ ๋ถ„์„ ๐Ÿ”ธ

  • ์ž…๋ ฅ๋œ ์ˆ˜๊ฐ€ ํšŒ๋ฌธ์ธ ์ˆ˜(ํŒฐ๋ฆฐ๋“œ๋กฌ; palindrome) ์ธ์ง€ ํ™•์ธํ•œ๋‹ค.
  • 2๋ถ€ํ„ฐ 64 ๊นŒ์ง€ ๊ธฐ์ˆ˜ ๋ณ€ํ™˜ ์‹œ ํšŒ๋ฌธ์ธ ์ˆ˜์ด๋ฉด 1์„, ์•„๋‹ˆ๋ผ๋ฉด 0์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๐Ÿ”ธ ๋ฌธ์ œ ํ’€์ด ๐Ÿ”ธ

  • ํšŒ๋ฌธ์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋ฌธ์ž์—ด ๋Œ€์นญ ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค.
  • 64 ์ž๋ฆฌ ๊นŒ์ง€์˜ ๊ธฐ์ˆ˜ ๋ณ€ํ™˜์„ ๊ตฌํ˜„ํ•œ๋‹ค.
    • Integer.toString(์ˆซ์ž, ๊ธฐ์ˆ˜) ๋ฉ”์„œ๋“œ๋Š” ์ตœ๋Œ€ 32 ์ž๋ฆฌ ๊ธฐ์ˆ˜ ๋ณ€ํ™˜์„ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, 64 ์ž๋ฆฌ ๊นŒ์ง€ ๋ณ€ํ™˜์ด ๊ฐ€๋Šฅํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•œ๋‹ค.
    • ๊ธฐ์ˆ˜ ๋ณ€ํ™˜์„ ์œ„ํ•ด 64๊ฐœ์˜ ๋ณ€ํ™˜์„ ์œ„ํ•œ ๋ฌธ์ž๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

๐Ÿ”ธ ์ฝ”๋“œ ๐Ÿ”ธ

import java.io.*;

public class Main {
    private static final String DIGITS = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@";

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringBuilder sb = new StringBuilder();

        int T = Integer.parseInt(br.readLine());

        for (int t = 0; t < T; t++) {
            int n = Integer.parseInt(br.readLine());

            sb.append(isHeaMoon(n) ? 1 : 0).append('\n');
        }

        bw.write(sb.toString());
        bw.flush();
    }

    private static boolean isHeaMoon(int n) {

        for (int i = 2; i <= 64; i++) {
            char[] chars = customBase(n, i).toCharArray();
            boolean flag = true;

            for (int j = 0; j <= chars.length / 2; j++) {
                if (chars[j] != chars[chars.length - j - 1]) {
                    flag = false;
                    break;
                }
            }

            if (flag) return true;
        }

        return false;
    }

    private static String customBase(int num, int base) {
        StringBuilder result = new StringBuilder();

        while (num > 0) {
            result.append(DIGITS.charAt(num % base));
            num /= base;
        }

        return result.reverse().toString();
    }
}

๐Ÿ”ธ ์ฝ”๋“œ ํ•ด์„ ๐Ÿ”ธ

  • isHeaMoon() ๋ฉ”์„œ๋“œ์—์„œ ์ž…๋ ฅ๋œ ์ˆ˜๊ฐ€ ํšŒ๋ฌธ์ธ์ง€ ํ™•์ธํ•œ๋‹ค.
    • 2๋ถ€ํ„ฐ 64๊นŒ์ง€ ๊ธฐ์ˆ˜ ๋ณ€ํ™˜์„ ํ•ด๋ณด๋ฉฐ ํšŒ๋ฌธ์ด๋ฉด 1, ์•„๋‹ˆ๋ฉด 0์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • customeBase() ๋ฉ”์„œ๋“œ์—์„œ ๊ธฐ์ˆ˜ ๋ณ€ํ™˜์„ ์ง„ํ–‰ํ•œ๋‹ค.
    • DIGISTS ์— ์ ํžŒ 64๊ฐœ์˜ ๋ฌธ์ž ์ค‘ ํ•˜๋‚˜๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ•œ๋‹ค.
    • num์„ base๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€ ๊ฐ’์„ ๋ˆ„์ ํ•œ ํ›„, ๋’ค์ง‘์–ด ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๐Ÿ”ธ end ๐Ÿ”ธ

728x90