본문 바로가기

PS/BOJ

[C++] BOJ (백준) 10773 : 제로

문제

10773번: 제로 (acmicpc.net)

 

10773번: 제로

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

www.acmicpc.net

코드
#include <iostream>
#include <stack>

using namespace std;

int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);

  stack<int> st;
  int k;
  cin >> k;
  while (k--) {
    int tmp;
    cin >> tmp;
    if (tmp == 0) st.pop();
    else st.emplace(tmp);
  }

  int sum = 0;
  while (!st.empty()) {
    sum += st.top();
    st.pop();
  }
  cout << sum;
  return 0;
}

 

설명

0을 입력받을 때마다 가장 최근의 수를 지운다.
즉, 가장 마지막에 입력된 값을 관리해야하기 때문에 LIFO 자료구조인 스택을 사용하여야 한다.

'PS > BOJ' 카테고리의 다른 글

[C++] BOJ (백준) 10816 : 숫자 카드 2  (0) 2023.03.05
[C++] BOJ (백준) 10814 : 나이순 정렬  (0) 2023.03.05
[C++] BOJ (백준) 10250 : ACM 호텔  (0) 2023.03.05
[C++] BOJ (백준) 9012 : 괄호  (0) 2023.03.01
[C++] BOJ (백준) 7568 : 덩치  (0) 2023.03.01