반응형
https://www.acmicpc.net/problem/10773
10773번: 제로
첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경
www.acmicpc.net
간단한 stack 사용 문제였습니다.
풀이방법
1. 0이 연속으로 계속 나와 stack이 비어있는 경우에 pop할 필요가 없습니다.
2. num이면 num을 push() num이 0이면 pop()
3. stack이 빌 때까지 안의 원소들을 합해줍니다.
Code
#include <bits/stdc++.h>
using namespace std;
int main(){
stack <int> s;
int k,ans=0;
cin >> k;
for(int i = 0; i < k; i++){
int num;
cin >> num;
if(num) s.push(num);
else s.pop();
}
while(!s.empty()){
ans += s.top();
s.pop();
}
cout << ans <<'\n';
}
'Algorithm' 카테고리의 다른 글
(C++) - 백준(BOJ)코딩 11948번 : 과목선택 답 (0) | 2017.04.03 |
---|---|
(C++) - 백준(BOJ) 5532 : 방학숙제 답 (0) | 2017.04.02 |
C++(씨쁠쁠)(cplusplus)-백준(baekjoon)(BaekJoon)코딩 10569번:다면체 답 (0) | 2017.04.02 |
(C++) - 백준(BOJ) 10813 : 공 바꾸기 답 (0) | 2017.04.02 |
C++(씨쁠쁠)(cplusplus)-백준(baekjoon)(BaekJoon)코딩 3449번:해밍 거리 답 (0) | 2017.04.02 |