Computer Science/C++

백준 C++ | #10 BOJ10773 제로 C++ 문제 풀이

토마토. 2022. 8. 9. 20:13

10773번: 제로 (acmicpc.net)

 

10773번: 제로

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

www.acmicpc.net

 

처음으로 풀어본 STL 문제였다. 

문제를 풀면서 어떻게 공백('\n')을 받아 루프를 멈출지를 엄청 고민했는데, 

c++ - 빈 줄까지 파일 읽기 - 스택 오버플로 (stackoverflow.com)

C++ string을 int로 변경하는 방법 (tistory.com)

알고보니 첫 입력으로 입력의 개수가 주어져 for문으로 구현하면 되었다. 

#include <iostream>
#include <vector>
#include <numeric>

int main() {
	int k;
	std::cin >> k;
	int sum = 0;

	std::vector<int> vec(k);

	int tmp;
	for (int i = 0; i < k; i++) {
		std::cin >> tmp;

		if (tmp == 0) {
			vec.pop_back();
		}
		else {
			vec.push_back(tmp);
		}
	}

	sum = std::accumulate(vec.begin(), vec.end(), 0);
	std::cout << sum << std::endl;
	return 0;
}