728x90
https://www.acmicpc.net/problem/10845
#include <bits/stdc++.h>
using namespace std;
#define fpos aaa
const int MAX = 100000;
int a[MAX+4],n, fpos=-1, bpos=-1;
string s1, s2;
int main(){
ios_base::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL);
cin >> n;
while(n--){
cin >> s1;
if(s1=="push"){
cin >> s2;
if(fpos==-1){ //첫번째 원소일때
fpos=bpos=0;
a[bpos]=stoi(s2);
}
else { //뒤에 추가
bpos++;
a[bpos]=stoi(s2);
}
}
else if (s1=="pop"){
if(fpos==-1) cout << "-1\n"; //비었을때
else if(fpos==bpos){ //원소 하나일때
cout << a[fpos]<<"\n"; //마지막 원소 출력
fpos=bpos=-1; //pos초기화
}
else { //앞에서 pop후 증가
cout << a[fpos]<<"\n";
fpos++;
}
}
else if (s1=="size"){
if(bpos==-1) cout <<"0\n"; //비었을때
else cout << bpos-fpos+1<<"\n";
}
else if(s1=="empty"){
if(bpos==-1)cout << "1\n";
else cout << "0\n";
}
else if(s1=="front"){
if(fpos!=-1) cout << a[fpos]<<"\n";
else cout << "-1\n";
}
else if(s1=="back"){
if(bpos!=-1) cout << a[bpos]<<"\n";
else cout << "-1\n";
}
}
}
테스트케이스 살펴보지않더라도 한번에 맞도록 노력하자.
항상 비어있을 때를 생각하자.
멋진 풀이를 발견했다.
https://www.acmicpc.net/source/38434701
엄청 짧은데 훨씬 간단하다.
728x90
'알고리즘 > 알고리즘 스터디' 카테고리의 다른 글
1316번: 그룹 단어 체커 (0) | 2023.03.02 |
---|---|
17071번: 숨바꼭질 5 (0) | 2023.03.02 |
10773번: 제로 (0) | 2023.03.01 |
1920번: 수 찾기 (0) | 2023.02.28 |
10828번: 스택 (0) | 2023.02.27 |