PS

BOJ 2304 - 창고 다각형

728x90

www.acmicpc.net/problem/2304

 

2304번: 창고 다각형

첫 줄에는 기둥의 개수를 나타내는 정수 N이 주어진다. N은 1 이상 1,000 이하이다. 그 다음 N 개의 줄에는 각 줄에 각 기둥의 왼쪽 면의 위치를 나타내는 정수 L과 높이를 나타내는 정수 H가 한 개의

www.acmicpc.net

 

- C++

#include <iostream>
#include <stack>
 
using namespace std;
 
int N, first = 1001, last, longest, pos, len, answer;
int arr[1001];
stack<int> st;
 
int main() {
    cin.tie(0);
    ios_base::sync_with_stdio(0);
 
    cin >> N;
 
    while (N--) {
        cin >> pos >> len;
        arr[pos] = len;
        if (last < pos) last = pos;
        if (first > pos) first = pos;
        if (len > arr[longest]) longest = pos;
    }
 
    for (int i = first; i <= longest; i++) {
        if (arr[i]) {
            if (st.empty())
                st.push(arr[i]);
            else if (arr[i] > st.top())
                st.push(arr[i]);
        }
        answer += st.top();
    }
 
    while (!st.empty()) st.pop();
 
    for (int i = last; i > longest; i--) {
        if (arr[i]) {
            if (st.empty())
                st.push(arr[i]);
            else if (arr[i] > st.top())
                st.push(arr[i]);
        }
        answer += st.top();
    }
 
    cout << answer;
 
    return 0;
}
cs

 

 

728x90

'PS' 카테고리의 다른 글

BOJ 18808 - 스티커 붙이기  (0) 2020.11.13
거스름돈 기초 문제  (0) 2020.11.12
BOJ 14719 - 빗물  (0) 2020.10.26
BOJ 1725 - 히스토그램  (0) 2020.10.26
BOJ 1935 - 후위 표기식 2  (0) 2020.10.25