문제) 백준 - 자료 구조 - 창고 다각형
https://www.acmicpc.net/problem/2304
2304번: 창고 다각형
첫 줄에는 기둥의 개수를 나타내는 정수 N이 주어진다. N은 1 이상 1,000 이하이다. 그 다음 N 개의 줄에는 각 줄에 각 기둥의 왼쪽 면의 위치를 나타내는 정수 L과 높이를 나타내는 정수 H가 한 개의
www.acmicpc.net
입력을 받을 때, 제일 긴 막대 기둥의 인덱스를 저장합니다. 먼저 오름차순(기둥이 길어지는 부분)을 계산합니다. 스택에 높이를 push 하여 다음 높이가 더 클 경우 push, 작을 경우 기존 스택에 가장 긴 높이의 넓이를 result에 더합니다.
C++ 소스코드)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
int solve(){ | |
stack<int> stk; | |
int result = 0; | |
//오름차순 계산 | |
for(int i = firstIdx; i <=longestIdx; ++i){ | |
if(col[i] != -1){ | |
if(stk.empty()) stk.push(col[i]); | |
else if(stk.top() < col[i]) | |
stk.push(col[i]); | |
} | |
result += stk.top(); | |
} | |
// Clear stack | |
while(!stk.empty()) stk.pop(); | |
// 내림차순 계산 | |
for(int i = lastIdx; i >longestIdx; --i){ | |
if(col[i] != -1){ | |
if(stk.empty()) stk.push(col[i]); | |
else if(stk.top() < col[i]) | |
stk.push(col[i]); | |
} | |
result += stk.top(); | |
} | |
return result; | |
} |
Full Code)
GitHub - Chocochip101/BOJ_Solution: BOJ Solutions
BOJ Solutions. Contribute to Chocochip101/BOJ_Solution development by creating an account on GitHub.
github.com
반응형
'PS(Problem Solving) > 백준_BOJ' 카테고리의 다른 글
[백준] 9421번 - 소수상근수 (C++) 문제 및 풀이 (0) | 2022.02.09 |
---|---|
[백준] 14697번 - 방 배정하기 (C++) 문제 및 풀이 (0) | 2022.02.09 |
[백준] 22869번 - 징검다리 건너기 (small) (C++) 문제 및 풀이 (0) | 2022.02.08 |
[백준] 6550번 - 부분 문자열 (C++) 문제 및 풀이 (0) | 2022.02.08 |
[백준] 2602번 - 돌다리 건너기 (C++) 문제 및 풀이 (0) | 2022.02.04 |
댓글