Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 투 포인터
- 재귀
- 정렬
- 우선순위 큐
- 유니티
- 유니온 파인드
- 백준
- 시뮬레이션
- 문자열
- Team Fortress 2
- 수학
- 브루트포스
- 다이나믹 프로그래밍
- 트리
- 다익스트라
- BFS
- 스택
- 백트래킹
- 구현
- XR Interaction Toolkit
- 그래프
- 그리디 알고리즘
- 누적 합
- Unreal Engine 5
- 알고리즘
- 자료구조
- VR
- ue5
- c++
- DFS
Archives
- Today
- Total
1일1알
백준 2493번 탑 C++ 본문
스택 자료구조를 사용하여 해결할 수 있는 문제이다. 문제를 풀고 다른 사람들의 풀이법을 보니 많은 사람들이 스택을 쌓으면서 답을 구해서 문제를 해결하였다. 나의 풀이법은 스택을 전부 쌓은 뒤에 제거해나가면서 문제를 해결하는 방법이다.
스택을 쌓으면서 문제를 해결하는 방법이 훨씬 간단하고 효율적인 방법인 것 같다. 접근을 잘못해서 풀이가 복잡하고 푸는데 오랜 시간이 걸린 것 같다.
#include <iostream>
#include <string>
#include <vector>
#include <math.h>
#include <algorithm>
#include <utility>
#include <stack>
#include <queue>
#include <math.h>
#include <set>
#include <unordered_map>
#include <unordered_set>
using namespace std;
typedef long long ll;
struct compare {
bool operator()(pair<int, int> lhs, pair<int, int> rhs) {
return lhs.first > rhs.first;
}
};
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
priority_queue<pair<int, int>, vector<pair<int, int>>, compare> pq;
stack<pair<int, int>> st;
int n, input;
cin >> n;
vector<int> ans(n, 0);
for (int i = 1; i <= n; i++) {
cin >> input;
st.push({ input,i });
}
int cnt = 0;
int maxval = 0;
while (!st.empty()) {
auto a = st.top();
if (!pq.empty()) {
if (a.first >= maxval) {
while (!pq.empty()) {
ans[pq.top().second - 1] = a.second;
pq.pop();
}
pq.push(a);
maxval = a.first;
}
else {
while (true) {
if (a.first >= pq.top().first) {
ans[pq.top().second - 1] = a.second;
pq.pop();
}
else {
break;
}
}
pq.push(a);
}
}
else {
maxval = a.first;
pq.push(a);
}
st.pop();
}
for (auto a : ans) {
cout << a << " ";
}
};
'알고리즘' 카테고리의 다른 글
백준 11497 통나무 건너뛰기 C++ (0) | 2021.11.09 |
---|---|
백준 2841번 외계인의 기타 연주 C++ (0) | 2021.11.08 |
백준 2531번 회전 초밥 C++ (0) | 2021.11.06 |
백준 2502번 떡 먹는 호랑이 C++ (0) | 2021.11.05 |
백준 1759번 암호 만들기 C++ (0) | 2021.11.04 |