[BOJ]3015 오아시스 재결합

강동현·2023년 12월 9일

코딩테스트

목록 보기
9/111
  • 플레티넘V 등급 문제: 내 실력은 아직 부족하기 때문에, 풀이시간이 오래 걸릴 수 밖에 없음
  • 게다가 정답률도 20% -> 플레티넘V 이상의 문제라는 의미
  • 스택 + 문제에 맞는 풀이 필요
  • long long으로 자료형 설정[이 개같은거 때문에 시간낭비를 오지게 했다.]
#include <bits/stdc++.h>
using namespace std;
int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
    long long N, height, answer = 0;
    stack<pair<long long, long long>> stk;
    cin >> N;
    cin >> height;
    stk.push({height, 0});
    for(long long i = 1; i < N; ++i){
        long long tmp = 0;
        cin >> height;
        while(!stk.empty() && stk.top().first <= height){
            if(stk.top().first == height){
                tmp = stk.top().second + 1;
                answer = answer + tmp;
                stk.pop();
            }
            else{
                answer = answer + stk.top().second + 1;
                stk.pop();
            }
        }
        if(!stk.empty() && stk.top().first >= height) ++answer;
        stk.push({height, tmp});
    }
    cout << answer;
    return 0;
}
profile
GAME DESIGN & CLIENT PROGRAMMING

0개의 댓글