백준 10773번: 제로
https://www.acmicpc.net/problem/10773
10773번: 제로
첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경
www.acmicpc.net
문제
예제
- 문제해석 및 풀이
이 문제는 주어지는 정수들을 차례로 입력하다가 0이 입력되면 가장 최근 입력된 정수를 삭제하고 마지막에는 입력된 모든 정수의 합을 출력하는 문제이다. 문제를 보자마자 어떻게 풀어야 할 지 감이 오는 어렵지 않은 문제였다. 벡터를 이용해 입력을 받다가 0이 입력되면 가장 최근에 입력받은 정수를 삭제하는 방식으로 코드를 구현했다.
- 코드
#include <iostream>
#include <vector>
using namespace std;
vector<int> v;
int main() {
int k;
long long int sum = 0;
cin >> k;
for (int i = 0; i < k; i++) {
int num;
cin >> num;
if (num == 0)
v.pop_back();
else
v.push_back(num);
}
for (int i = 0; i < v.size(); i++) {
sum += v[i];
}
cout << sum;
return 0;
}
벡터의 마지막 원소를 지워주는 pop_back함수와 마지막 원소 뒤에 새로운 원소를 추가해주는 push_back함수를 이용해 쉽게 구현할 수 있었던 문제였다. 참고로 최종 합의 숫자가 꽤 크기 때문에 sum 변수는 long long int로 선언해 주었다.
- 정리
문제의 난이도가 높지 않았기 때문에 간단하게 구현할 수 있었다.
궁금한 것이나 더 나은 코드 및 방법, 그리고 잘못된 것이 있다면 댓글에 남겨주시기 바란다.
'백준 baekjoon' 카테고리의 다른 글
[백준 BOJ] 4949 균형잡힌 세상 C++ (0) | 2024.02.05 |
---|---|
[백준 BOJ] 9012 괄호 C++ (6) | 2024.02.04 |
[백준 BOJ] 28278 스택 2 C++ (2) | 2024.02.03 |
[백준 BOJ] 13909 창문 닫기 C++ (0) | 2024.02.02 |
[백준 BOJ] 2609 최대공약수와 최소공배수 C++ (0) | 2024.02.01 |