https://www.acmicpc.net/problem/10773
10773번: 제로
첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경
www.acmicpc.net
처음엔 stack 안의 값들을 전부 더해서 출력해주는 좋은 함수가 있을까싶어 찾아보려다 그냥 sum 하나 선언해두고
더했다.
sum -= num으로 아무생각없이 적었더니
빼기가 안되는걸 보고
부랴부랴 top 값을 임시적으로 저장할 topN을 선언후 top 값을 저장후 뺐다. 지금보니 topN보단 temp 라고 명명했음
좋았을거 같은 느낌.
#include <iostream>
#include <stack>
#include <string>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int testCase = 0;
int num = 0;
int sum = 0;
int topN = 0;
stack<int> stk;
cin >> testCase;
for (int i = 0; i < testCase; i++)
{
cin >> num;
if (num == 0)
{
topN = stk.top();
stk.pop();
sum -= topN;
}
else
{
stk.push(num);
sum += num;
}
}
cout << sum << "\n";
}'STUDY > Baekjoon' 카테고리의 다른 글
| [백준] 10816 c++ 숫자 카드 2 (0) | 2022.08.19 |
|---|---|
| [백준] 1920 c++ 수 찾기 (0) | 2022.08.19 |
| [백준] 10828 c++ 스택 (0) | 2022.08.19 |
| [백준] 11047 c++ 동전 0 (0) | 2022.08.18 |
| [백준] 2750 c++ 수 정렬하기 (0) | 2022.08.18 |