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
- 백트래킹
- 다이나믹 프로그래밍
- 문자열
- XR Interaction Toolkit
- Unreal Engine 5
- c++
- 정렬
- 알고리즘
- DFS
- ue5
- 수학
- 누적 합
- 유니티
- Team Fortress 2
- VR
- 시뮬레이션
- 재귀
- 다익스트라
- 스택
- 유니온 파인드
- 자료구조
- 브루트포스
- 구현
- 백준
- 그래프
- 트리
- 그리디 알고리즘
- 투 포인터
- BFS
- 우선순위 큐
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 |