728x90
반응형
[백준] C++ & C# 제로 (10773번) 실버 4
📝 문제
나코더 기장 재민이는 동아리 회식을 준비하기 위해서 장부를 관리하는 중이다. 재민이는 정말 고지식하게 모든 수를 받아 적은 후, 그 수가 "0"이면, 가장 최근에 쓴 수를 지우는 방식으로 모두 적어두었다. 재민이는 이렇게 모든 수를 받아 적은 후 그 수의 합을 알고 싶어 한다. 재민이를 도와주는 프로그램을 작성하시오.
🔎 입력
첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000)
이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0 이상 1,000,000 이하의 값을 가지며, 정수가 "0"일 경우에는 최근에 쓴 수를 지운다.
🔎 출력
재민이가 적은 수의 합을 출력한다.
🎀 입출력 예시
정답
C++
#include <iostream>
#include <vector> // vector를 사용하기 위해 필요
using namespace std;
int main()
{
int n;
cin >> n;
vector<int> arr; // vecter -> vector로 수정
int total = 0;
// 입력 및 처리
for (int i = 0; i < n; i++) {
int num;
cin >> num;
if (num == 0 && !arr.empty()) {
arr.pop_back(); // 0이 나오면 마지막에 추가된 값을 제거
} else {
arr.push_back(num); // 0이 아닐 경우 값을 배열에 추가
}
}
// 남은 값의 합 계산
for (int i = 0; i < arr.size(); i++) {
total += arr[i];
}
// 최종 결과 출력
cout << total;
return 0;
}
C#
using System;
using System.Collections.Generic;
class Program
{
static void Main(string[] args)
{
int K = int.Parse(Console.ReadLine());
Stack<int> stack = new Stack<int>();
for (int i = 0; i < K; i++)
{
int num = int.Parse(Console.ReadLine());
if (num == 0 && stack.Count > 0)
{
stack.Pop();
}
else
{
stack.Push(num);
}
}
int sum = 0;
foreach (int num in stack)
{
sum += num;
}
Console.WriteLine(sum);
}
}
728x90
반응형
'◆C# > C# : 백준 문제 풀이' 카테고리의 다른 글
[백준] C++ & C# ATM (11399번) (0) | 2024.09.22 |
---|---|
[백준] C++ & C# 그룹 단어 체커 (1316번) (0) | 2024.09.21 |
[백준] C++ & C# 약수 구하기 (2501번) (0) | 2024.09.21 |
[백준] C++ & C# Bank Interest (21633번) (0) | 2024.09.21 |
[백준] C++ & C# 웰컴 키트 (30802번) (0) | 2024.09.20 |