📖Algorithm/Stack
C++ [Algorithm] - 백준 10773 제로
구동엽
2024. 7. 29. 13:44
문제
0을 외치면 스택에서 pop을 해준 후 모든 수를 받아 적으면 스택의 합을 구하면 된다.
예제 입출력
코드
#include <iostream>
#include <stack>
using namespace std;
stack<int> myStack;
void solution(int n) {
if (n != 0) {
myStack.push(n);
}
else {
if (!myStack.empty()) {
myStack.pop();
}
}
}
int sum() {
int answer = 0;
while (!myStack.empty()) {
answer += myStack.top();
myStack.pop();
}
return answer;
}
int main() {
int N;
cin >> N;
while (N--) {
int order;
cin >> order;
solution(order);
}
cout << sum();
return 0;
}
스택의 기초 문제지만 예외 처리에 대한 생각을 키울 수 있었다!!
틀린 코드
더보기
#include <iostream>
#include <stack>
using namespace std;
stack<int> myStack;
void solution(int n) {
if (n != 0) {
myStack.push(n);
}
else {
myStack.pop();
}
}
int sum() {
int answer = 0;
for (int i = 0; i < myStack.size(); i++) {
answer += myStack.top();
myStack.pop();
}
return answer;
}
int main() {
int N;
cin >> N;
while (N--) {
int order;
cin >> order;
solution(order);
}
cout << sum();
return 0;
}
스택이 비어 있을 때의 예외 처리를 안했다.