문제
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;
}
스택이 비어 있을 때의 예외 처리를 안했다.
'📖Algorithm > Stack' 카테고리의 다른 글
자바 [Programmers] 2단계 - 괄호 회전하기 (0) | 2024.12.06 |
---|---|
자바 [Programmers] 2단계 - 짝지어 제거하기 (0) | 2024.12.03 |
C++ [Algorithm] - 백준 28278 스택2 (0) | 2024.07.29 |