https://www.acmicpc.net/problem/10828
- 코드
#include <iostream>
#include <algorithm>
#include <cstring>
#include <string>
#include <stdio.h>
#include <queue>
#include <vector>
#include <unordered_map>
#include <set>
#include <map>
#include<cmath>
#include<stack>
#include<deque>
#define LL long long
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
deque <int> ans;
int n;
cin >> n;
cin.ignore();
for (int i = 0; i < n; i++) {
string com;
getline(cin, com, '\n');
if (com.length() > 5) {
int num = stoi(com.substr(5));
ans.push_back(num);
}
else if (com == "pop") {
if (!ans.empty()) {
cout << ans.back() << "\n";
ans.pop_back();
}
else {
cout << "-1" << "\n";
}
}
else if (com == "size") {
cout << ans.size() << "\n";
}
else if (com == "empty") {
if (ans.empty()) {
cout << 1 << "\n";
}
else cout << 0 << "\n";
}
else if (com == "top") {
if (!ans.empty()) {
cout << ans.back() << "\n";
}
else {
cout << "-1" << "\n";
}
}
}
return 0;
}
- 알고리즘 분류 : 구현
- 문제 해설
스택을 구현하는 문제였지만 덱 stl을 이용하여 풀었다. 풀고보니 벡터를 이용해도 됐을 것 같지만 안전하게 왼쪽 오른쪽을 모두 반환하고 넣고 뺼수 있는 덱을 선택했다.난관이었던 점은 cin이 아닌 getline을 써서 입력받을 때 공백으로 입력이 구분되지 않도록 해야하는 점이었다. getline을 쓰는게 오랜만이라 cin.ignore을 써야한다는 점을 찾고 문자열 슬라이싱 substr, string을 int로 바꾸는 stoi를 찾는게 조금 시간이 걸리는 문제였다. 나머지는 stl 라이브러리 함수만 이용하는 되는거라 어렵지 않았다.
'Koala - 13기 > 코딩테스트 준비 스터디' 카테고리의 다른 글
[백준 / Python] #18223 민준이와 마산 그리고 건우 (0) | 2024.02.25 |
---|---|
[백준/Python] #13549 숨바꼭질 3 (0) | 2024.02.25 |
[백준/Python] 5972번 택배 배송 (0) | 2024.02.24 |
[PG/python3] 합승 택시 요금 (0) | 2024.02.22 |
[PG] 2차원 동전 뒤집기 (0) | 2024.02.19 |