일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- i자형 인재
- c#
- 택시 기하학
- 빅오 표기법
- T자형 인재
- 스택
- 마인크래프트
- VPS
- 브루트포스 알고리즘
- 배열 리스트
- 다이나믹프로그래밍
- 2025 대한민국 채용박람회
- windows 12
- 그리디 알고리즘
- 큐
- 카니발대학교 공대강국
- VRoid Studio
- 닌텐도 스위치 2
- 라자냐
- 자료구조
- unity engine
- 그래픽 디자인
- 잴다의 전설 티어스 오브 더 킹덤
- 이진 탐색
- blender
- 우선순위 큐
- vrm posing desktop
- 코딩테스트
- 영어
- 시작
Archives
- Today
- Total
WalkerJei's Lifelog
백준알고리즘 28278번 스택 2 C# 본문
세부 정보
- 사이트: 백준알고리즘
- 번호: 28278
- 문제명: 스택 2
- 언어: C#
- 분류: 자료 구조, 스택
- 비고:
문제
정수를 저장하는 스택을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.
명령은 총 다섯 가지이다.
- 1 X: 정수 X를 스택에 넣는다. (1 ≤ X ≤ 100,000)
- 2: 스택에 정수가 있다면 맨 위의 정수를 빼고 출력한다. 없다면 -1을 대신 출력한다.
- 3: 스택에 들어있는 정수의 개수를 출력한다.
- 4: 스택이 비어있으면 1, 아니면 0을 출력한다.
- 5: 스택에 정수가 있다면 맨 위의 정수를 출력한다. 없다면 -1을 대신 출력한다.
입력
첫째 줄에 명령의 수 N이 주어진다. (1 ≤ N ≤ 1,000,000)
둘째 줄부터 N개 줄에 명령이 하나씩 주어진다.
출력을 요구하는 명령은 하나 이상 주어진다.
출력
출력을 요구하는 명령이 주어질 때마다 명령의 결과를 한 줄에 하나씩 출력한다.
풀이
StringBuilder를 사용하면 가변적으로 입력을 받을 수 있다.
위에서 언급한 1 X 또는 2와 같은 식으로 가능하다.
using System.Text;
StreamReader sr = new StreamReader(new BufferedStream(Console.OpenStandardInput()));
StreamWriter sw = new StreamWriter(new BufferedStream(Console.OpenStandardOutput()));
StringBuilder sb = new StringBuilder();
Stack<int> stack = new Stack<int>();
int x = Convert.ToInt32(sr.ReadLine());
for(int i = 0; i < x; i++)
{
int[] input = Array.ConvertAll(sr.ReadLine().Split(), int.Parse);
switch (input[0])
{
// 정수를 스택에 삽입
case 1:
{
stack.Push(input[1]);
break;
}
// 스택에 정수가 있다면 맨 위의 정수를 빼고 출력하며 없으면 -1 출력
case 2:
{
sb.Append(stack.Count != 0 ? stack.Pop().ToString() : "-1");
sb.Append("\n");
break;
}
// 스택 내의 정수의 개수 출력
case 3:
{
sb.Append(stack.Count);
sb.Append("\n");
break;
}
// 스택이 비어있으면 1, 아니면 0 출력
case 4:
{
sb.Append(stack.Count == 0 ? "1" : "0");
sb.Append("\n");
break;
}
// 스택에 정수가 있다면 맨 위의 정수 출력, 없으면 -1 출력
case 5:
{
sb.Append(stack.Count != 0 ? stack.Peek().ToString() : "-1");
sb.Append("\n");
break;
}
}
}
sw.Write(sb);
sr.Close();
sw.Close();
후기
StringBuilder를 사용하면 가변적으로 입력을 받는 것이 가능하다는 것을 배웠다.
'소프트웨어 개발 > 코딩테스트(기성 문제)' 카테고리의 다른 글
백준알고리즘 10733번 제로 C# (0) | 2025.03.28 |
---|---|
백준알고리즘 2501번 약수 구하기 C# (0) | 2025.03.27 |
백준알고리즘 9935번 문자열 폭발 C# (0) | 2025.03.25 |
백준알고리즘 15552번 빠른 A + B C# (0) | 2025.03.24 |
백준알고리즘 2579번 계단 오르기 C# (0) | 2025.03.23 |