https://www.acmicpc.net/problem/10773
수를 입력하고 입력한 수를 모두 더하되 0을 입력하면 가장 최근에 쓴 수를 지우는 문제이다.
Vector 안에 수를 넣고 0을 입력받았을 때 Vector안에 있는 수를 지우면 되겠다고 생각했다.
코드
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int N;
int input;
cin >> N;
int result = 0;
vector<int> arr;
for (int i = 1; i <= N; i++)
{
cin >> input;
if (input != 0)
{
arr.push_back(input);
}
else if (!arr.empty())
{
arr.pop_back();
}
}
for (int element : arr)
{
result += element;
}
cout << result;
return 0;
}
설명
입력할 횟수 N을 입력 후 그 횟수만큼 수를 입력한다.
input에 입력된 숫자가 0이 아니면 arr 벡터에 푸쉬(삽입)하고
0이면 최근에 넣은 숫자를 팝(삭제)한다.
for(int element : arr) 구문을 통해 벡터 안에 있는 모든 수를 뽑아 result에 더한 후
결과를 출력한다.
'Algorithm' 카테고리의 다른 글
[C++] BaekJoon 10184 나이순 정렬 (0) | 2023.10.15 |
---|---|
[C++] map (0) | 2023.10.15 |
[C++] BaekJoon 10866 덱 (0) | 2023.09.26 |
[C++] BaekJoon 1929 소수 구하기 (3) | 2023.09.19 |
[C++] BaekJoon 2164 카드2 (0) | 2023.09.18 |