매일 조금씩

백준 10773번: 제로 본문

알고리즘

백준 10773번: 제로

mezo 2020. 4. 5. 17:20
728x90
반응형

 

 

스택 관련 문제다.

 

 

 

 

 

 

 

처음에, stack 요소의 합을 출력하기 위해 합을 구하는 for문에서 에러가 발생하였다. 

 

for (int i = 0; i < size; i++) {
		sum += s.top();
		s.pop();
	}

 

 

여기서 i의 범위를 i < s.size()로 했더니 잘못된 값이 출력되었다.

원인은 s.pop()으로 인해 s.size()가 업데이트 되기 때문이다.

 

 

 

원래 s.size()값을 저장하기 위해

int size = s.size(); 라고 정의 한 후 i < size로 수정 후 성공하였다.

 

#include <iostream>
#include <string>
#include <stack>
using namespace std;

int k;
stack<int> s;

int main(void) {
	ios_base::sync_with_stdio(0);
	cin.tie(0);	//cin 실행속도 향상

	cin >> k;

	for (int i = 0; i < k; i++) {
		int n = 0; 
		cin >> n;
		if (n == 0)
			s.pop();
		else
			s.push(n);
	}

	int sum = 0;
	int size = s.size();
	for (int i = 0; i < size; i++) {
		sum += s.top();
		s.pop();
	}

	cout << sum << endl;
	
	return 0;
}

 

 

 

 

728x90
반응형

'알고리즘' 카테고리의 다른 글

백준 4949번: 균형잡힌 세상  (0) 2020.04.05
백준 9012번: 괄호  (0) 2020.04.05
백준 10828번: 스택  (0) 2020.04.05
백준 4195번: 친구 네트워크  (0) 2020.04.04
백준 16562번: 친구비  (0) 2020.03.13