Algorithm/Baekjoon

10828-스택기초

Boogallee 2018. 1. 11. 15:39

역시나 문자열 관련이 제일 짜증나고 싫다..


push 100 처럼 문자열안에서 숫자를 뽑아내야 하는데 처음에는 파싱하다가


cin 을 사용하면 띄어쓰기만큼 읽기 때문에


두번 사용하면 깔금하게 해결가능하다.


#define _CRT_SECURE_NO_WARNINGS

#include <iostream>

#include <stack>

#include <stdio.h>

#include <string>


using namespace std;



int main()

{

int n=0;

stack<int> S;

cin >> n;


string str;



while (n--)

{

//char str[100005];

//gets(str);

cin >> str;

char tmp[10];


for (int i = 0; str[i] != 32; i++)

{

if (!strcmp(str, "push"))

{

int num;

cin >> num;

S.push(num);

break;

}

else if (!strcmp(str, "pop"))

{

if (!S.empty())

{

int tmp = S.top();

S.pop();

printf("%d\n", tmp);

}

else

printf("-1\n");


break;

}

else if (!strcmp(str, "empty"))

{

if (!S.empty())

{

printf("0\n");

}

else

printf("1\n");


break;

}

else if (!strcmp(str, "size"))

{

printf("%d", S.size());

break;

}

else if (!strcmp(str, "top"))

{

if (!S.empty())

{

int tmp = S.top();

printf("%d\n", tmp);

}

else

printf("-1\n");

break;

}

}


//printf("%s", str);

}


system("pause");


return 0;

}