반응형
https://www.acmicpc.net/problem/10773
10773번: 제로
첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경
www.acmicpc.net
풀이
스택을 사용하여 정말 쉽게 풀 수 있는 문제입니다.
문제의 '가장 최근에 재민이가 쓴 수를 지우게 시킨다.' 문장에서 이를 가장 효율적으로 수행할 수 있는 자료구조로
스택을 생각할 수 있었다면 구현은 어렵지 않습니다.
내 코드
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int K, sum = 0;
cin >> K;
stack<int> s;
while (K--) {
int num;
cin >> num;
if (num == 0) {
sum -= s.top();
s.pop();
}
else {
s.push(num);
sum += num;
}
}
cout << sum;
}
합을 입력받으면서 처리해주지 않아도, while(!s.empty()) 조건을 이용하면, 쉽게 합을 계산할 수 있습니다!
반응형
'Baekjoon' 카테고리의 다른 글
[C++] 2493번 : 탑 (0) | 2024.03.05 |
---|---|
[C++] 1874번 : 스택 수열 (2) | 2024.03.05 |
[C++] 1406번 : 에디터 (1) | 2024.02.27 |
[C++] 1919번 : 애너그램 만들기 (0) | 2024.02.23 |
[C++] 백준 3273번 : 두 수의 합 (0) | 2024.02.22 |