[알고리즘 스터디] 2주차_스택_코드업 1714

·2022년 10월 28일
1

Algorithm Study

목록 보기
35/77
post-custom-banner

현우는 숫자를 좋아한다. 항상 숫자를 가지고 장난을 하고 숫자로 무언가 만들기를 취미생활로 즐기고 있다.
하루는 어떤 숫자를 쓰고, 그 수를 거꾸로 쓰기로 했다.
어떤 수 N이 입력되면 그 수를 거꾸로 출력하는 프로그램을 작성하시오.

#include <iostream>
using namespace std;

enum { eMaxCount = 1001, eInvalid = -1 };

class Stack
{
public:
    Stack()
        : muTopIndex(0u)
    {
    }

    void Push(int _iData)
    {
        if (eMaxCount <= muTopIndex)
        {
            cout << "Stack overflow!" << endl;
            return;
        }

        miarrData[++muTopIndex] = _iData;
    }

    bool IsEmpty(void)
    {
        return 0 == muTopIndex;
    }

    int Top(void)
    {
        if (true == IsEmpty())
        {
            cout << "Stack underflow!" << endl;
            return eInvalid;
        }

        return miarrData[muTopIndex];
    }

    void Pop(void)
    {
        if (true == IsEmpty())
        {
            cout << "Stack underflow!" << endl;
            return;
        }

        --muTopIndex;
    }

private:
    int             miarrData[eMaxCount];
    unsigned int    muTopIndex;
};

void PushNum(int _Num, Stack* _Stack)
{
    if (_Num < 10)
    {
        _Stack->Push(_Num);
    }
    else
    {
        PushNum(_Num / 10, _Stack);
        _Stack->Push(_Num - ((_Num / 10) * 10));
    }
}

// 코드업 1714
int main()
{
	int a = 0;
    cin >> a;

    Stack* NewStack = new Stack();

    if (a >= 0)
    {
        PushNum(a, NewStack);

        while (false == NewStack->IsEmpty())
        {
            cout << NewStack->Top();
            NewStack->Pop();
        }
    }
}

post-custom-banner

1개의 댓글

comment-user-thumbnail
2022년 11월 26일

멋져욥

답글 달기