[210324][백준/BOJ] 2493번 탑

문제

입출력


풀이

STL stack을 이용해서 문제를 풀었다.

  1. stack이 empty 일때는 0을 출력한다.
  2. 위치를 저장하기 위한 인덱스와 입력받은 값을 push 한다.
  3. top과 입력받은 값을 비교해서 top < 입력받은 값이면 pop을 하며 stack이 empty가 되어서 0이 출력된다.
  4. top > 입력받은 값이면 stack의 top의 인덱스 값을 출력한다.

코드

#include <bits/stdc++.h>
using namespace std;

int main()
{
	int n, m, max = -1;
	scanf("%d", &n);
	stack<pair<int, int>> S;

	for (int i = 1; i <= n; ++i)
	{
		scanf("%d", &m);

		while (!S.empty())
		{
			if (S.top().second < m)
				S.pop();
			else if (S.top().second >= m)
			{
				printf("%d ", S.top().first);
				break;
			}
		}
		if (S.empty())
			printf("%d ", 0);

		S.push({ i, m });
	}
}

좋은 웹페이지 즐겨찾기