반응형

https://www.acmicpc.net/problem/6198

 

6198번: 옥상 정원 꾸미기

문제 도시에는 N개의 빌딩이 있다. 빌딩 관리인들은 매우 성실 하기 때문에, 다른 빌딩의 옥상 정원을 벤치마킹 하고 싶어한다. i번째 빌딩의 키가 hi이고, 모든 빌딩은 일렬로 서 있고 오른쪽으

www.acmicpc.net

 

스택에 h를 넣어주면서 스택의 탑이 h 이하라면 pop해줍니다. (h를 확인할 수 없는 빌딩들을 제외)

스택에 담긴 개수는, 현재 높이의 옥상을 확인할 수 있는 관리인의 수입니다.

 

#include <iostream>
#include <stack>
using namespace std;

int n, h;
long long int ans = 0;
stack<int> stk;

int main() {
    scanf("%d", &n);
    for (int i = 0; i < n; i++) {
        scanf("%d", &h);
        while (!stk.empty() && stk.top() <= h) {
            stk.pop();
        }
        ans += stk.size();
        stk.push(h);
    }
    printf("%lld", ans);
}
반응형

'Algorithm' 카테고리의 다른 글

백준 1749 : 점수따먹기  (0) 2021.11.17
백준 2170 : 선 긋기  (0) 2021.11.17
백준 17940 : 지하철  (0) 2021.11.17
백준 5549 : 행성 탐사  (0) 2021.11.17
백준 1689 : 겹치는 선분  (0) 2021.11.17

+ Recent posts