일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 우선순위 큐
- 잴다의 전설 티어스 오브 더 킹덤
- vrm posing desktop
- VRoid Studio
- 큐
- 그리디 알고리즘
- 영어
- 라자냐
- c#
- 코딩테스트
- windows 12
- i자형 인재
- 자료구조
- 택시 기하학
- 마인크래프트
- T자형 인재
- 그래픽 디자인
- 브루트포스 알고리즘
- VPS
- unity engine
- 시작
- 빅오 표기법
- 배열 리스트
- 닌텐도 스위치 2
- 2025 대한민국 채용박람회
- 카니발대학교 공대강국
- blender
- 스택
- 다이나믹프로그래밍
- 이진 탐색
- Today
- Total
WalkerJei's Lifelog
백준알고리즘 10733번 제로 C# 본문
세부 정보
- 사이트: 백준알고리즘
- 번호: 10773
- 문제명: 제로
- 언어: C#
- 분류: 구현, 자료 구조, 스택
- 비고:
문제
나코더 기장 재민이는 동아리 회식을 준비하기 위해서 장부를 관리하는 중이다.
재현이는 재민이를 도와서 돈을 관리하는 중인데, 애석하게도 항상 정신없는 재현이는 돈을 실수로 잘못 부르는 사고를 치기 일쑤였다.
재현이는 잘못된 수를 부를 때마다 0을 외쳐서, 가장 최근에 재민이가 쓴 수를 지우게 시킨다.
재민이는 이렇게 모든 수를 받아 적은 후 그 수의 합을 알고 싶어 한다. 재민이를 도와주자!
입력
첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000)
이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경우 해당 수를 쓴다.
정수가 "0"일 경우에 지울 수 있는 수가 있음을 보장할 수 있다.
출력
재민이가 최종적으로 적어 낸 수의 합을 출력한다. 최종적으로 적어낸 수의 합은 231-1보다 작거나 같은 정수이다.
풀이
stack.Pop()은 스택 내용물 중 가장 나중에 들어간 내용물을 빼는 것이다.
stack.Push()는 괄호 안의 수를 스택에 넣는다.
sr.Close()와 sw.Close()는 StreamReader와 StreamWriter를 사용하기에 넣어준 것으로 깜빡하고 안 쓰면 출력이 제대로 나오지 않게 되니 반드시 빼먹지 말고 코드에 넣어야 한다.
using System.Collections;
StreamReader sr = new StreamReader(Console.OpenStandardInput());
StreamWriter sw = new StreamWriter(Console.OpenStandardOutput());
Stack stack = new Stack();
// 입력할 정수의 개수
int k = Convert.ToInt32(sr.ReadLine());
// 입력할 정수를 저장할 배열
int[] number = new int[k];
// 정수의 합계
int sum = 0;
for (int i = 0; i < number.Length; i++)
number[i] = Convert.ToInt32(sr.ReadLine());
for (int i = 0;i < number.Length; i++)
{
// 입력한 정수가 0이면 스택에서 뺀다.
if (number[i] == 0)
stack.Pop();
// 0이 아니면 해당 수를 스택에 넣는다
else
stack.Push(number[i]);
}
// 스택 내의 수를 모두 더한다
foreach (int i in stack)
sum += i;
sw.WriteLine(sum);
// 해당 부분을 작성하지 않으면 출력이 그냥 공백으로 나온다
sr.Close();
sw.Close();
후기
오늘 새로 배운 것은 foreach의 사용 방법, StreamReader와 StreamWriter 사용을 마치고 Close()를 사용해야 하는 이유였다. 복습한 내용으로는 Stack에서 Push()와 Pop()을 사용하는 방법이 있었다. 잠자고 있던 자료구조 지식이 깨어나는 기분이 든다.
'소프트웨어 개발 > 코딩테스트(기성 문제)' 카테고리의 다른 글
백준알고리즘 10828번 스택 C# (0) | 2025.03.30 |
---|---|
백준알고리즘 18258번 큐 2 C# (0) | 2025.03.29 |
백준알고리즘 2501번 약수 구하기 C# (0) | 2025.03.27 |
백준알고리즘 28278번 스택 2 C# (0) | 2025.03.26 |
백준알고리즘 9935번 문자열 폭발 C# (0) | 2025.03.25 |