rueki
SW Expert Academy 8931. 제로 본문
728x90
반응형
문제 링크 :
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
여기서는 스택의 개념을 이해하고 있다면 매우 쉬울 문제이다.
0이 입력됬을 때는 pop을 하고 그 외의 숫자 입력 시 push를 하는 개념을 이해하고,
Last in, First out의 개념도 인지하고 있으면 풀기 쉽다.
<stack> 을 선언해서 쉽게 풀 수 있었다.
#include <iostream>
#include <string>
#include <stack>
using namespace std;
int main()
{
int T;
int num;
stack<int> s;
cin>>T;
for(int i=0;i<T;i++)
{
int sum = 0;
int temp = 0;
cin>>num;
for(int j=0;j<num;j++)
{
int n;
cin>>n;
if(n != 0){
s.push(n);
// 0이 아닌 숫자가 들어왔을 때 스택에 push
}
else{
// 0이 들어왔을 때, 스택이 비어있지 않으면 안에 값 pop시킨다.
if(!s.empty()){
s.pop();
}
}
}
/*
if(s.empty()){
cout<<'#'<<i+1<<' '<<0<<'\n';
}
else{
for(int k=0;k<=s.size();k++){
temp = s.top();
sum += temp;
s.pop();
}
*/
//스택이 비어질때까지 맨 위의 숫자를 sum에 더하고 pop을 반복한다.
// 애초에 스택이 빈상태이면 sum은 0을 반환할 것이다.
while(!s.empty())
{
sum += s.top();
s.pop();
}
cout<<'#'<<i+1<<' '<<sum<<'\n';
}
return 0;
}
728x90
반응형
'C, C++ 문제풀이' 카테고리의 다른 글
SW Expert Academy 8673. 코딩 토너먼트1 (0) | 2020.04.14 |
---|---|
SW Expert Academy 8821. 적고 지우기 (0) | 2020.04.12 |
SW Expert Academy 9317. 석찬이의 받아쓰기 (0) | 2020.04.07 |
SW Expert Academy 1217. 거듭 제곱 (재귀함수) (0) | 2020.04.06 |
SW Expert Academy 1288. 새로운 불면증 치료법 (2) | 2020.04.05 |
Comments