백준/실버

[백준 11068번] 회문인 수 (C++)

게임개발기원 2025. 5. 25. 04:57

문제링크 : https://www.acmicpc.net/problem/11068

#include <bits/stdc++.h>
using namespace std;

const int MOD = 1000000007;

bool isPanlindrome(int n)
{
    for(int i=2; i<=64; i++) //해당 진법 변환
    {
        int tmp = n;
        string s;
        string str;

        while(tmp!=0)
        {
            s.push_back(tmp%i);
            tmp/=i;
        }

        str = s;
        reverse(str.begin(), str.end()); //뒤집기

        if(s==str) return 1; //팰린드롬 체크
    }
    return 0;
}

int main() 
{
    int T;
    cin >> T;

    while(T--)
    {
        int N;
        cin >> N;
        if(isPanlindrome(N)) cout << 1 << "\n";
        else cout << 0 << "\n";
    }

    return 0;
}

 

입력받은 수에 대해서 2~64까지 각각의 진법으로 변환하여 계산하여 문자열에 저장하고,

해당 문자열을 뒤집은 문자열과 비교해 같은가 아닌가를 체크한다.

 

같다면 1을 아니면 0을 출력해주면 된다.