반응형
정답코드
#include <iostream>
#include <stack>
using namespace std;
int main()
{
stack<int> s;
int n;
int num;
int sum = 0;
cin >> n;
for(int i=0; i<n; i++)
{
cin >> num;
if (num != 0)
s.push(num);
else
{
s.pop();
}
}
while(!s.empty())
{
sum += s.top();
s.pop();
}
cout << sum << endl;
return 0;
}
push하는 과정은 for문으로 n을 입력 받은 후 실행하도록 하면 됩니다. 물론 문제에는 K이기에 K를 변수로 지정하면 됩니다.
push하고 0이면 pop하고, 이런 식으로 하다가 sum을 구해줘야 하는데 stack은 배열과 다르게 sum을 계산해야 합니다. 각각 하나의 구조체 느낌으로 판단해야 하기 때문에 배열처럼 array[0] 이런 식으로 불가능합니다. 따라서 while문을 통해 !s.empty() 즉 empty일때까지 sum += s.top();을 한 다음 이후 pop으로 제거하는 방식으로 구하면 됩니다.
이 방법은 개인 취향이고 for문을 size 만큼 돌려서 해당 문을 반복해도 상관없습니다.
반응형
'IT 프로그래밍 > 백준' 카테고리의 다른 글
[C++] 백준 4949번 균형잡힌 세상 (0) | 2024.11.05 |
---|---|
[c++] 1874번 스택 수열 (0) | 2024.11.05 |
[C++] 백준 10828 스택 (0) | 2024.11.03 |
[C++] 백준 5086번 배수와 약수 (0) | 2024.11.03 |
[C++] 백준 9012번 괄호 (0) | 2024.11.03 |