๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐“ก๐“ธ๐“ธ๐“ถ๐Ÿฃ: ๐’œ๐“๐‘”๐‘œ๐“‡๐’พ๐“‰๐’ฝ๐“‚/์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด

BOJ11068 : ํšŒ๋ฌธ์ธ ์ˆ˜ (Silver 5)

 

์ž ์ง€๊ธˆ๋ถ€ํ„ฐ ๋‚˜๋Š” ๋ฉ์ฒญ์ด๋‹ค๋ฅผ 100๋ฒˆ ๋ณต์ฐฝํ•œ๋‹ค.

์ตœ๋Œ€์ธ 1000000๋ฅผ 2์ง„์ˆ˜๋กœ ๋ฐ”๊พธ๋ฉด ์•ฝ 20์ž๋ฆฌ ์ˆ˜๊ฐ€ ๋‚˜์˜ค๋Š”๋ฐ, ๋‚œ ์ด๊ฑธ ๋ฐ”๋ณด๊ฐ™์ด ๋ฐฐ์—ด์„ ์–ต์ด ๋„˜๋Š” ๋งŒํผ ํ• ๋‹นํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค... (๋Œ€์ฒด ์™œ..?) ๊ทธ๋ž˜์„œ ์ด๊ฑด ์–ด๋–ป๊ฒŒ ํ•˜๋ผ๋Š” ๊ฑธ๊นŒ, ๋ฐฐ์—ด๋กœ๋„ ์•ˆ๋˜๊ณ  ๋™์ ํ• ๋‹น์œผ๋กœ๋„ ์•ˆ๋˜์–ด์„œ ๊ฒฐ๊ตญ ์ธํ„ฐ๋„ท ์ฐพ์•„์„œ deque์„ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ......... ์ƒ๊ฐํ•ด๋ณด๋‹ˆ๊นŒ ๋ฐฐ์—ด์—” 20๊ฐœ ์ž๋ฆฌ๋งŒ ์žˆ์–ด๋„ ๋˜๋Š” ๊ฑฐ์˜€์Œ ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹๊ฐœ๋ฉ์ฒญํ•ด........

 

#include <iostream>
#include <queue>

using namespace std;
int examine(int a)
{
    deque<int> memory;
    for (int i = 2; i <= 64; i++)
    {
        int tmp = a;
        bool flag = true;
        memory.clear();
        while (tmp)
        {
            memory.push_front(tmp % i);
            tmp /= i;
        }
        int size = memory.size();
        for (int j = 0; j < (size / 2); j++)
        {
            if (memory.front() != memory.back())
            {
                flag = false;
                break;
            }
            memory.pop_back();
            memory.pop_front();
        }
        if (flag == true)
        {
            return 1;
        }
    }
    return 0;
}

int main()
{
    int TC, number;
    cin >> TC;
    for (int i = 0; i < TC; i++)
    {
        cin >> number;
        cout << examine(number);
        cout<<"\n";
    }
}

deque ๊ฐ€์ ธ๋‹ค ์“ด๊ฑฐ ๋นผ๊ณ ๋Š” ๋‹ค ๋‚ด๊ฐ€ ์ƒ๊ฐํ•ด์„œ ์งฐ๋‹ค

๋‹จ์ˆœํ•˜๋‹ค. for๋ฌธ์„ 2๋ถ€ํ„ฐ 64๊นŒ์ง€ ๋Œ๋ฉด์„œ ์ง„๋ฒ• ๊ณ„์‚ฐ์„ ํ•˜๊ณ  ํšŒ๋ฌธ์ธ์ง€ ์•„๋‹Œ์ง€ ๊ฒ€์‚ฌํ• ๊ฑด๋ฐ,

์›๋ž˜ ์ง„๋ฒ• ๊ณ„์‚ฐ์€ ๋‚˜๋ˆ„๊ณ  ๋‚จ์€ ๋‚˜๋จธ์ง€๋ฅผ ๊ฑฐ๊พธ๋กœ ์ •๋ ฌํ•ด์•ผํ•˜์ง€๋งŒ, ์–ด์ฐจํ”ผ ํšŒ๋ฌธ ๊ฒ€์‚ฌ๋ผ ๊ตณ์ด ๊ทธ๋Ÿฌ์ง€ ์•Š๊ณ  ๋‚˜๋จธ์ง€๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ deque์— ์ €์žฅํ–ˆ๋‹ค. 

 

์ง„๋ฒ• ๋ณ€ํ™˜์„ ํ•œ ํ›„์—๋Š” deque์—์„œ ์•ž ๊ฐ’, ๋’ท ๊ฐ’์„ ๋น„๊ตํ•ด, ํ•œ ๋ฒˆ์ด๋ผ๋„ ์•ž๋’ค๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ทธ๋ƒฅ flag ๋ฐ”๊พธ๊ณ  breakํ•ด์คฌ๊ณ , ๋งŒ์•ฝ ๋ชจ๋‘ ์ผ์น˜ํ•ด์„œ flag๊ฐ€ true๋ผ๋ฉด 1์„ returnํ•ด์ค˜์„œ, ํ•˜๋‚˜๋ผ๋„ ํšŒ๋ฌธ์ด๋ผ๋ฉด 1์„ ์ถœ๋ ฅํ•˜๋„๋ก ํ–ˆ๋‹ค. 

 

for๋ฌธ์„ ๋Œ์•„์„œ 64์ง„๋ฒ•๊นŒ์ง€ ๋ชจ๋‘ flag๊ฐ€ 1์ธ์ ์ด ์—†์—ˆ๋‹ค๋ฉด return ๋˜์ง€ ์•Š์•˜์„ ๊ฒƒ์ด๋ฏ€๋กœ, ๋‹จ ํ•˜๋‚˜๋„ ํšŒ๋ฌธ์ด ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์ด๊ณ  ๊ทธ๋ž˜์„œ ๊ทธ ๋•Œ return 0์„ ํ•ด์ฃผ์—ˆ๋‹ค. ํ›„