BOJ 문제풀이

백준 10773번 c++ 풀이

koreasunoo 2021. 8. 13. 00:27

안녕하세요 오늘은 스택을 이용하면 정말정말 간단하게 풀리는 문제를 풀어보도록 하겠습니다.

 

전략:

1. 스택을 선언해주고 K번 반복하는 for문을 만들어서 만약 0이 들어왔으면 스택의 가장 위를 지우고, 그게 아니라면 넣어준다.

2. 스택 사이즈로 si라는 변수를 선언해주고, si만큼 반복하는 for문에서 result에 스택의 가장 위를 더해주고, pop으로 그 숫자를 스택에서 뺀다.

 

코드:

#include <bits/stdc++.h>
using namespace std;

int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	long long result = 0;
	int K;
	cin>>K;
	stack<int> s;
	for(int i = 0; i<K; ++i){
		int x;
		cin>>x;
		if(x==0){
			s.pop();
		}
		else{
			s.push(x);
		}
	}
	int si = s.size();
	for(int i= 0; i<si; ++i){
		result += s.top();
		s.pop();
	}
	cout<<result<<"\n";
}

'BOJ 문제풀이' 카테고리의 다른 글

백준 2748번 c++ 풀이  (0) 2021.08.14
백준 18111번 c++ 풀이  (0) 2021.08.14
백준 4949번 c++ 풀이  (0) 2021.08.12
백준 2805번 c++ 풀이  (0) 2021.08.11
백준 1874번 c++ 풀이  (0) 2021.08.11