[BaekJoon 1259][๐ŸŸค1] ํŒฐ๋ฆฐ๋“œ๋กฌ์ˆ˜

Date :   Updated :

โ“ ๋ฌธ์ œ

๋ฐฑ์ค€ 1259 - โ€œํŒฐ๋ฆฐ๋“œ๋กฌ์ˆ˜โ€

๐ŸŽฏ ๋‚œ์ด๋„

Bronze ๐ŸŸค1

๐Ÿง  ํ’€์ด

1. ๋‚ด ํ’€์ด (๋ฌธ์ž์—ด)

- ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • string

- ์„ค๋ช…

์ •์ˆ˜๋ฅผ ๋ฐ›์•„์„œ string์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ , reverse ํ•˜๋Š” ๋ฐฉ์‹์˜ ํ’€์ด์ด๋‹ค.

๋ฌธ์ œ๋ฅผ ๋ณด์ž๋งˆ์ž ๋ช‡๋ฒˆ์งธ ๋ฌธ์ž๋ฅผ ๋ฐ”๊พธ๋ผ๋Š” ๊ฒƒ๋„ ์—†๊ณ , ์ •์ˆ˜์˜ ํฌ๊ธฐ ์ž์ฒด๋„ ํฌ์ง€ ์•Š์•„์„œ ์ด ๋ฐฉ๋ฒ•๋ถ€ํ„ฐ ๋– ์˜ฌ๋ž๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์‹ค์ œ๋กœ๋„ ๊ฐ€์žฅ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์‚ฌ์šฉํ•œ ํ’€์ด์ด๊ธฐ๋„ ํ•˜๋‹ค.

์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(N)์ธ๋ฐ, reverse์˜ ์„ฑ๋Šฅ์ด ๋ฌธ์ž ๊ฐฏ์ˆ˜์— ๋น„๋ก€ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

- ์ฝ”๋“œ

๋‚ด ํ’€์ด ์ฝ”๋“œ
#include <iostream>

#include <string>

#include <algorithm>


using namespace std;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    while(true)
    {
        int iInput{};
        cin >> iInput;

        if(iInput == 0)
        {
            break;
        }

        string strInput{ to_string(iInput) };   // string์œผ๋กœ ํ˜•๋ณ€ํ™˜
        string strTemp(strInput);

        reverse(strInput.begin(), strInput.end());

        if(strInput == strTemp)
        {
            cout << "yes" << "\n";
        }
        else
        {
            cout << "no" << "\n";
        }
    }    

    return 0;
}

2. ์ถ”๊ฐ€ ํ’€์ด 1 (ํˆฌ ํฌ์ธํ„ฐ)

- ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • Two Pointer

- ์„ค๋ช…

ํˆฌ ํฌ์ธํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•œ ํŒฐ๋ฆฐ๋“œ๋กฌ ๋ฌธ์ œ์˜ ๊ฐ€์žฅ ์ •์„์ ์ธ ํ’€์ด์ด๋‹ค.

๋ง์ด ํ•„์š” ์—†๋Š” ํŒฐ๋ฆฐ๋“œ๋กฌ ๋ฌธ์ œ์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ๋ณด์ด๋Š” ํ’€์ด์ด๋‹ค. reverse๋„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— <algorithm> ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋„ ํ•„์š”๊ฐ€ ์—†๋‹ค.

์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” ๋ฌธ์ž์—ด ๊ธธ์ด์— ๋น„๋ก€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— O(N)์ด๋‹ค.

- ์ฝ”๋“œ

์ถ”๊ฐ€ ํ’€์ด ์ฝ”๋“œ
#include <iostream>

#include <string>


using namespace std;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    while(true)
    {
        int iInput{};
        cin >> iInput;

        
        if(iInput == 0)
        {
            break;
        }
        
        string strInput{ to_string(iInput) };
        bool bPalin{ true };        // ํŒฐ๋ฆฐ๋“œ๋กฌ์ธ์ง€ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ถ”์ ํ•˜๋Š” flag ๋ณ€์ˆ˜

        for(int iLeft = 0, iRight = static_cast<int>(strInput.length()) - 1; iLeft < iRight; ++iLeft, --iRight)
        {
            if(strInput[iLeft] != strInput[iRight]) // ๋‹ค๋ฅด๋ฉด ๋ฐ”๋กœ break;
            {
                bPalin = false;
                break;
            }
        }

        cout << (bPalin ? "yes" : "no") << "\n";
    }    

    return 0;
}

3. ์ถ”๊ฐ€ ํ’€์ด 2 (์ •์ˆ˜ ์—ฐ์‚ฐ)

- ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • Mathematics

- ์„ค๋ช…

string ์—†์ด ์ •์ˆ˜ ์—ฐ์‚ฐ๋งŒ์œผ๋กœ ํ•ด๊ฒฐํ•˜๋Š” ํ’€์ด์ด๋‹ค.

์ž…๋ ฅ์ด ์ •์ˆ˜ํ˜•์œผ๋กœ ๋“ค์–ด์˜ค๊ธฐ ๋•Œ๋ฌธ์—, ๊ตณ์ด string์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ๋ณด๋‹ค ์ž…๋ ฅ๋ฐ›์€ ์ •์ˆ˜๋ฅผ ์ž๋ฆฟ์ˆ˜๋งˆ๋‹ค ๋ณ€ํ™˜ ์—ฐ์‚ฐ์„ ํ†ตํ•ด ์†์ˆ˜ ๋’ค์ง‘์–ด์ฃผ๋Š” ๋ฐฉ์‹์ด๋‹ค.

๋ฐฉ๋ฒ•์ด ๋…ํŠนํ•ด์„œ ์ด ๋ฌธ์ œ๋ฅผ ํฌ์ŠคํŒ…ํ•œ ์ด์œ ์ด๊ธฐ๋„ ํ•˜๋‹ค. ํ•˜์ง€๋งŒ ์œ„์˜ ๋‘ ํ’€์ด๊ฐ€ ๋” ์ง๊ด€์ ์ด๋ฏ€๋กœ ๊ทธ๋ฆฌ ์ถ”์ฒœํ• ๋งŒํ•œ ํ’€์ด๋Š” ์•„๋‹Œ ๋“ฏํ•˜๋‹ค.

์ •์ˆ˜ ์ž๋ฆฟ์ˆ˜๋งŒํผ ๋ฐ˜๋ณตํ•˜๋ฏ€๋กœ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(N)์ด๋‹ค.

- ์ฝ”๋“œ

์ถ”๊ฐ€ ํ’€์ด ์ฝ”๋“œ
#include <iostream>

#include <string>


using namespace std;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    while(true)
    {
        int iInput{};
        cin >> iInput;

        
        if(iInput == 0)
        {
            break;
        }

        int iOrigin{ iInput }, iReverse{};

        // iReverse์—๋Š” iInput์˜ 1์˜ ์ž๋ฆฌ๋ฅผ ๋”ํ•œ ๋’ค 10์„ ๊ณฑํ•˜๊ณ  iInput์€ 10์„ ๋‚˜๋ˆ ์ฃผ๋Š” ์—ฐ์‚ฐ์„ ๋ฐ˜๋ณต
        while(iInput > 0)
        {
            iReverse = iReverse * 10 + iInput % 10;
            iInput /= 10;
        }

        if(iOrigin == iReverse)
        {
            cout << "yes\n";
        }
        else
        {
            cout << "no\n";
        }
    }    

    return 0;
}

๐Ÿ’ญ ํ›„๊ธฐ

๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ํ˜•ํƒœ์˜ ํŒฐ๋ฆฐ๋“œ๋กฌ ๋ฌธ์ œ๊ฐ€ ์•„๋‹๊นŒ ์‹ถ๋‹ค.

ํˆฌ ํฌ์ธํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ๋ฌธ์ œ์—์„œ ์ •๋ง ์ž์ฃผ ์“ฐ์ด๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๊ณ , ์ •์ˆ˜ ๋ณ€ํ™˜ ํ’€์ด๋Š” โ€œ์ด๋Ÿฐ ํ’€์ด๋„ ์žˆ๊ตฌ๋‚˜โ€ ํ•˜๊ณ  ๋ด๋‘๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.

๐Ÿ”— ์ฐธ๊ณ ์ž๋ฃŒ

Comments