코딩테스트/백준
[백준 - 11068] 회문인 수 .java
머밍
2025. 4. 28. 17:36
https://www.acmicpc.net/problem/11068
1. 2부터 64진법까지 돌면서 진법으로 계산한 결과의 int 배열을 리턴값으로 가지는 함수 생성
2. 각 결과의 배열 크기는 자릿수만큼으로 계산함! -> 이부분 중요 값을 구해야 회문구할때 편함
3. 진법 결과가 회문인지 검사하는 함수 생성 -> 배열 크기의 반까지 돌며 각자리가 같은지 검사
하나의 진법이 참이면 참을 반환
회문은 배열의 길이가 중요하다 빈자리는 비교하면 안됨 -> 따로 코드구현없이 처음 배열을 생성할때 초기화를 잘하면 된다
import java.util.Scanner;
public class test1 {
//진법 변환
static int[] convert(int x, int b){
int len = 0, num = x;
//자릿수를 계산
while(num>0){
num/=b;
len++;
}
//자릿수를 기반으로 해당 크기의 배열을 생성
int[] nums = new int[len];
len = 0;
while(x>0){
nums[len++]=x%b;
x/=b;
}
return nums;
}
//배열의 앞에서부터와 뒤에서부터 비교하며 회문 여부 체크
static boolean isP(int[] nums){
for(int i=0; i<nums.length/2; i++){
if(nums[i]!=nums[nums.length-i-1]){
return false;
}
}
return true;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
while(T-- > 0) {
int x= sc.nextInt();
boolean answer = false;
for(int i = 2; i <= 64; i++){
int[] digits = convert(x,i);
if(isP(digits)){
answer = true;
break;
}
}
System.out.println(answer? "1":"0");
}
}
}