Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- std::endl
- conversion constructor
- C++
- member function pointer
- c++ multi chatting room
- dynamic_cast
- base from member
- std::vector
- new&delete
- pointer to member data
- this call
- delete function
- operator overloading
- vector size
- virtual function
- return by reference
- c++ basic practice
- std::ostream
- std::cout
- 더 지니어스 양면포커
- increment operator
- suffix return type
- diamond inheritance
- virtual inheritance
- constructor
- placement new
- discord bot
- virtual destructor
- virtual function table
- vector capacity
Archives
- Today
- Total
I'm FanJae.
[BOJ] 10773 제로 (C++) 본문
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