본문 바로가기
백준 문제 풀이 & C++ 공부

백준 10773번 C++

by daisy0461 2021. 6. 22.

https://www.acmicpc.net/problem/10773

 

10773번: 제로

첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경

www.acmicpc.net

최근에 C++의 stack에 관하여 공부를 해서 다른 백준 문제를 풀었는데

(현재 추가적인 공부가 필요해서 임시저장)

동일하게 문제에서 stack사용을 요구하는 것 같아서 stack으로 풀었습니다.

조건문과 stack의 사용 방법만 제대로 익힌 상태라면 쉽게 풀 수 있었을 것입니다.

 

이번에 문제를 풀면서 알아낸것은 pop은 그져 꺼내기만 한다는 것이었습니다.

top에 있는 요소를 꺼내서 전달이 가능할 줄 알았는데 그런게 아니었습니다.

 

#define _CRT_SECURE_NO_WARNINGS

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

int main()
{
	stack<int> moneys;

	int testCase;
	scanf("%d", &testCase);		//몇개의 정수를 받을 것인지?

	for (int i = 0; i < testCase; i++) {		//testCase만큼 push pop을 함
		int money;
		scanf("%d", &money);
		if (money == 0) {			
			moneys.pop();
		}
		else {
			moneys.push(money);
		}
	}

	int sum = 0;

	for (int i = 0; !moneys.empty(); i++) {
		sum += moneys.top();
		moneys.pop();
	}

	printf("%d", sum);

}

'백준 문제 풀이 & C++ 공부' 카테고리의 다른 글

C++ Vector Container  (0) 2021.07.05
백준 9012 C++ & cin.ignore()  (0) 2021.07.04
백준 7568번 C/C++  (0) 2021.06.21
백준 4553번 C/C++  (0) 2021.06.14
백준 2869번 C/C++  (0) 2021.03.01