I'm FanJae.

[BOJ] 10773 제로 (C++) 본문

Algorithm

[BOJ] 10773 제로 (C++)

FanJae 2024. 10. 28. 18:44

1. 문제 링크

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

 

2. 문제 접근

- 0이 들어오면 가장 최근에 쓴 수를 지우는게 핵심인 스택을 사용할 수 있으면 어렵지 않게 풀이를 연상할 수 있는 문제다.

 

3. 문제 풀이

- stack에 각 수를 넣는다.

- 0이 들어오면 stack에 있는 꼭대기 값을 버린다.

- n 만큼의 입력이 모두 끝나면, 그 값을 합산해주면 정답이 된다.

 

4. 소스 코드(C++)

더보기
#include <iostream>
#include <stack>
using namespace std;
int main(void)
{
	int n;
	long long int answer = 0;
	stack <int> value;

	ios::sync_with_stdio(false);
	cin.tie(NULL);

	cin >> n;
	while (n--)
	{
		int temp;
		cin >> temp;
		if (temp == 0) // 0인 경우 가장 최근 값 삭제
		{
			value.pop(); 
		}
		else // 0이 아닌 경우 그 값을 넣는다.
		{
			value.push(temp);
		}
	}
	while (!value.empty()) // 남아있는 값을 모두 더함.
	{
		answer += value.top();
		value.pop();
	}
	cout << answer;
}

'Algorithm' 카테고리의 다른 글

[BOJ] 2493 탑 (C++)  (0) 2024.10.29
[BOJ] 1874 스택 수열 (C++)  (1) 2024.10.29
[BOJ] 1158 요세푸스 문제 (C++)  (1) 2024.10.28
[BOJ] 5397 키로거 (C++)  (1) 2024.10.28
[BOJ] 1406 에디터 (C++)  (0) 2024.10.28
Comments