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 πΈ
- μ²μμλ κ°λ¨ν Integer.toString()μΌλ‘ ꡬννλ μ€ μμλ€.
- κΈ°μ λ³νμ 32κΉμ§λ§ μ§μνλ€λ κ²μ μ²μ μμλ€.
- Java 곡μ λ¬Έμλ₯Ό 보면 toString()μ λν μ€λͺ κ³Ό κΈ°μ(radix)μ μ΅λκ°κ³Ό μ΅μκ° μ€λͺ μ΄ μ νμλ€.
728x90