문제


숫자를 하나씩 입력 받는데 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

+ Recent posts