어흥
[해커랭크] Maximum Element (C++) 본문
728x90
반응형
1. 주의할 점
- 최대값을 어떤 방식으로 저장하고 있을 것인가
- Stack에서 Pop한 이후, Stack이 비었다면 최대값은?
2. 구현
- Info 형태의 구조체를 담는 Stack S를 생성한다
- 현재까지의 최대값을 담고 있는 curMax 값을 0으로 초기화한다(입력값들은 모두 자연수이므로)
- 1번 동작을 수행하는 경우, 새로 담을 원소 값을 A에 저장하고, A와 curMax값을 비교하여 큰 값을 curMax에 할당한다. Info 구조체에서 val은 현재 원소, maxi는 이때까지의 최대값을 담는다
- 2번 동작을 수행하는 경우, Stack에서 원소 1개를 뺀다. 해당 작업 이후, Stack이 비었다면 curMax에는 0을, 아니라면 curMax에는 Stack의 Top에 있는 원소의 curMax를 할당한다
- 3번 동작을 수행하는 경우, curMax를 출력한다
#include <iostream>
#include <algorithm>
#include <stack>
using namespace std;
struct info{
int val, maxi;
};
info tmp;
int main() {
stack<info> s;
int query,num,a,curMax = 0;
cin>>query;
while(query--){
cin>>num;
if(num==1){
cin>>a;
tmp.val =a;
curMax = max(curMax, a);
tmp.maxi = curMax;
s.push(tmp);
}
else if(num==2){
s.pop();
if(s.empty())
curMax = 0;
else
curMax = s.top().maxi;
}
else
cout<<curMax<<'\n';
}
return 0;
}
728x90
반응형
'알고리즘 > HackerRank' 카테고리의 다른 글
[해커랭크] Truck Tour (C++) (0) | 2021.02.02 |
---|---|
[해커랭크] Castle on the Grid (C++) (0) | 2021.02.02 |
[해커랭크] Tree: Huffman Decoding (C++) (0) | 2021.01.22 |
[해커랭크] Binary Search Tree : Lowest Common Ancestor (C++) (0) | 2021.01.22 |
[해커랭크] Binary Search Tree : Insertion (C++) (0) | 2021.01.20 |
Comments