문제
숫자를 하나씩 입력 받는데 0이 나오면 그 이전에 숫자를 제거하면 되는 문제다
문제 해결을 위한 준비물
stack - 숫자를 저장하기 위함
scanf - 입력되는 시간을 줄이기 위함
코드
#include <iostream>
#include <stack>
using namespace std;
int main()
{
int k, num, sum = 0;
stack<int> numbers;
cin >> k;
for(int i = 0; i < k; i++){
scanf("%d", &num);
if(num != 0) numbers.push(num);
else numbers.pop();
}
while(!numbers.empty()){
sum += numbers.top();
numbers.pop();
}
cout << sum;
return 0;
}
풀이
한번에 해결되어서 별 다른 문제는 없었다 여기서 포인트는
array -> stack 사용 - array를 쓰기엔 과분한 기능이 많다, 동적할당이란 점도 데이터절약에 좋은 듯하다
cin -> scanf 사용 - cin은 느리다, 개선할 방법은 있지만 이번 문제는 간단하게 풀었던 관계로 다음에 쓰기로 했다
'프로그래밍 문제집 > 백준' 카테고리의 다른 글
1152번-단어의 개수 (0) | 2022.01.20 |
---|---|
1463번-1로 만들기 (0) | 2022.01.19 |
12865번-평범한 배낭 (0) | 2022.01.17 |
1920번-수 찾기 (0) | 2022.01.17 |
9012번-괄호 (0) | 2022.01.16 |