▽문제 바로가기
https://codeup.kr/problem.php?id=3102
입력
첫째줄에 N이 입력된다.(1<=N<=200)
둘째 줄 부터 각 줄에 하나씩 명령어 N개가 입력된다.
출력
명령어에 따라 동작결과를 순서대로 출력한다. push와 pop은 출력되는 결과가 없음에 유의한다.
문제 풀이
STL stack 사용하지 않고 구현해봤습니다. 생각보단 쉬웠습니다.
#include <stdio.h>
#include <iostream>
using namespace std;
int main(){
int n;
scanf("%d\n", &n); //엔터로 입력종료
//200개 명령어, 각 명령어는 10개단어이하
char command[201][10];
//명령입력
for(int i=0;i<n;i++) gets(command[i]);
int stack[201] = {0,};
int top = -1; //처음 top는 -1
for(int i=0;i<n;i++){
//push명령어면
if(command[i][0]=='p'&&command[i][1]=='u'){
top++; //top증가
int num = 0;
//숫자칸부터 숫자가 안나올때 까지(1자리 이상 수여도 계산)
for(int j=6;;j++){
if(command[i][j]<48||command[i][j]>57) break;
num = num*10 + (command[i][j]-48);
}
stack[top] = num;
}
//top 명령어면
else if(command[i][0]=='t'){
if(top==-1) printf("-1\n");
else printf("%d\n", stack[top]);
}
//pop 명령어면
else if(command[i][0]=='p'&&command[i][1]=='o'){
if(top!=-1){
stack[top]=0;
top--;
}
}
//size 명령어면
else if(command[i][0]=='s'){
printf("%d\n", top+1);
}
//empty 명령어면
else if(command[i][0]=='e'){
if(top==-1) printf("true\n");
else printf("false\n");
}
}
return 0;
}
'알고리즘' 카테고리의 다른 글
[C/C++] 코드업(codeup) 3129번 올바른 괄호 2 (0) | 2020.02.11 |
---|---|
[C/C++] 코드업(codeup) 3127번 수식 계산 1 (0) | 2020.02.10 |
[C/C++] 코드업(codeup) 3022번 큰 수 뺄셈 (0) | 2020.02.07 |
[C/C++] 코드업(codeup) 4745번 부등호 (0) | 2020.02.06 |
[C/C++] 코드업(codeup) 4439번 벽장문의 이동 (0) | 2020.02.05 |