C# 17298번 오큰수
2022. 2. 15. 23:11ㆍ코딩테스트 문제 풀이/[백준] 스택
728x90
반응형
코드 :
using System;
using System.Text;
using System.Collections.Generic;
namespace _6
{
internal class Program
{
static void Main(string[] args)
{
int N = Convert.ToInt32(Console.ReadLine());
int[] input = Array.ConvertAll(Console.ReadLine().Split(' '), int.Parse);
StringBuilder sb = new StringBuilder();
//오큰수를 바로 찾지 못한 값들을 넣기 위한 스택
Stack<int> stack = new Stack<int>();
//오큰수를 바로 찾지 못한 값들의 인덱스를 넣기 위한 스택
Stack<int> stackIndex = new Stack<int>();
//결과값 배열
int[] outputArr = new int[N];
for (int i = 0; i < N; i++)
{
//배열이 비어있지 않다는건 아직 오큰수를 못찾은 값이 있다는뜻
//Peek보다 input이 크다는건 그 값은 Peek의 오큰수라는 뜻
//
while(stack.Count > 0 && (stack.Peek() < input[i]))
{
outputArr[stackIndex.Peek()] = input[i];
stack.Pop();
stackIndex.Pop();
}
stack.Push(input[i]);
stackIndex.Push(i);
}
while(stackIndex.Count > 0)
{
outputArr[stackIndex.Peek()] = -1;
stackIndex.Pop();
}
outputArr[N-1] = -1;
foreach (var item in outputArr)
{
sb.Append(item + " ");
}
Console.WriteLine(sb);
}
}
}
728x90
반응형
'코딩테스트 문제 풀이 > [백준] 스택' 카테고리의 다른 글
C# 1874번 스택 수열 (0) | 2022.02.15 |
---|---|
C# 4949번 균형잡힌 세상 (0) | 2022.02.15 |
C# 9012번 괄호 (0) | 2022.02.09 |
C# 10773번 제로 (0) | 2022.02.09 |
C# 10828번 스택 (0) | 2022.02.09 |