티스토리 뷰

백준/실버

[백준 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을 출력해주면 된다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함