728x90
반응형
문제
내가 작성한 코드 (C++ 성공)
#include <iostream>
#include <string.h>
#include <vector>
using namespace std;
int main(){
vector<int> stack;
int n;
cin >> n;
char command[100];
for(int i=0; i<n; i++){
cin >> command;
if(!strcmp(command, "push")){
int num;
cin >> num;
stack.push_back(num);
}
if(!strcmp(command, "pop")){
if(stack.begin() == stack.end()){
cout << "-1\n";
} else {
cout << stack[stack.size()-1]<< "\n";
stack.erase(stack.end()-1);
}
}
if(!strcmp(command, "size")){
cout << stack.size() << "\n";
}
if(!strcmp(command, "empty")){
if(stack.size() == 0) {
cout << "1\n";
} else {
cout << "0\n";
}
}
if(!strcmp(command, "top")){
if(stack.size() == 0){
cout << "-1\n";
} else{
cout << stack[stack.size()-1] << "\n";
}
}
}
return 0;
}
정리
command를 입력하고나서 문자열을 비교해주는 strcmp() 함수를 사용해서 풀어보았다.
"push" 일 경우,
vector 의 push_back() 함수를 이용해서 숫자를 넣어주었다.
"pop" 일 경우,
아무것도 들어있지 않으면 "-1" 을 출력해주고
값이 들어있다면 마지막 값을 출력해주고 erase() 함수를 통해 값을 지워준다.
size()-1 을 한 이유는 vector에서 마지막 같은 널값이기 때문에 -1을 해주어야 마지막 값을 찾을 수 있다.
"size" 일 경우,
size() 함수를 사용해서 크기를 출력해준다.
"empty" 일 경우,
size() 함수를 사용해 크기가 0인지 아닌지 판별해 0 또는 1을 출력해준다.
"top" 일 경우,
비어있을 경우 "-1" 을 출력해주고, "pop" 일 경우와 같이 마지막에 들어있는 값을 출력해준다.
스택의 기본적인 명령어와 명령어에 대한 처리를 직접 해볼 수 있는 문제였다.
728x90
반응형
'알고리즘 > BaekJoon' 카테고리의 다른 글
[백준 알고리즘] 17262번 : 팬덤이 넘쳐흘러 (2) | 2019.08.12 |
---|---|
[백준 알고리즘] 17294번 : 귀여운 수~ε٩(๑> ₃ <)۶з (0) | 2019.08.01 |
[백준 알고리즘] 10773번 : 제로 (0) | 2019.07.31 |
[백준 알고리즘] 9012번 : 괄호 (0) | 2019.07.31 |
[백준 알고리즘] 1874번 : 스택 수열 (0) | 2019.07.31 |