일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- 리얼클래스
- html
- IT 동향
- SSAFYcial
- 싸피
- 우테코
- 코딩테스트 연습
- 네트워크 관리사 2급 실기
- 코딩테스트
- 네트워크 관리사
- SSAFY
- 백준
- 구글
- 코테
- IT 트렌드
- python
- 인앱결제
- 신문스크랩
- KT
- it 뉴스
- it 이슈
- 백준위
- 싸피셜
- Java
- 카카오
- 프로그래머스
- 네트워크 관리사 2급
- 신문 스크랩
- java 객체지향 프로그래밍
- SSAFY 7기
Archives
- Today
- Total
개발자일걸요..?
10866번 덱 본문
728x90
반응형
문제링크 : www.acmicpc.net/problem/10866
10866번: 덱
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
버전 1. STL<deque> 이용 ( 메모리 : 2020KB 시간 : 384ms )
#include <iostream>
#include <deque>
#include <string>
using namespace std;
int main() {
int N = 0;
cin >> N;
deque<int> dq;
string commend = "";
int a = 0;
while (N--) {
cin >> commend;
if (commend == "push_front") {
cin >> a;
dq.push_front(a);
}
else if (commend == "push_back") {
cin >> a;
dq.push_back(a);
}
else if (commend == "pop_front") {
if (dq.empty()) cout << -1 << "\n";
else {
cout << dq.front() << "\n";
dq.pop_front();
}
}
else if (commend == "pop_back") {
if (dq.empty()) cout << -1 << "\n";
else {
cout << dq.back() << "\n";
dq.pop_back();
}
}
else if (commend == "size") {
cout << dq.size() << "\n";
}
else if (commend == "empty") {
cout << dq.empty() << "\n";
}
else if (commend == "front") {
if (dq.empty()) cout << -1 << "\n";
else {
cout << dq.front() << "\n";
}
}
else if (commend == "back") {
if (dq.empty()) cout << -1 << "\n";
else {
cout << dq.back() << "\n";
}
}
}
return 0;
}
버전 2. STL <vector> 이용 ( 메모리 : 2020KB 시간 : 340ms )
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main() {
int N = 0;
cin >> N;
vector<int> dq;
string commend = "";
int a = 0;
while (N--) {
cin >> commend;
if (commend == "push_front") {
cin >> a;
dq.insert(dq.begin(),a);
}
else if (commend == "push_back") {
cin >> a;
dq.push_back(a);
}
else if (commend == "pop_front") {
if(dq.empty()) cout<<-1<<"\n";
else {
cout << dq.front() << "\n";
dq.erase(dq.begin());
}
}
else if (commend == "pop_back") {
if (dq.empty()) cout << -1 << "\n";
else {
cout << dq.back() << "\n";
dq.erase(dq.end()-1);
}
}
else if (commend == "size") {
cout << dq.size() << "\n";
}
else if (commend == "empty") {
cout << dq.empty() << "\n";
}
else if (commend == "front") {
if (dq.empty()) cout << -1 << "\n";
else {
cout << dq.front() << "\n";
}
}
else if (commend == "back") {
if (dq.empty()) cout << -1 << "\n";
else {
cout << dq.back() << "\n";
}
}
}
return 0;
}
반응형
'알고리즘코딩 > Baekjoon Online Judge' 카테고리의 다른 글
5430번 AC (0) | 2021.02.27 |
---|---|
1021번 회전하는 큐 (0) | 2021.02.26 |
1966번 프린트 큐 (0) | 2021.02.25 |
11866 요세푸스 문제0 (0) | 2021.02.25 |
2164번 카드2 (0) | 2021.02.24 |
Comments