[문제]
[문제 풀이]
- 우선 막대기를 입력받으며 stack에 저장
- 하나씩 pop하며 가장 높은 막대기와 비교
- 맨 오른쪽 막대기는 무조건 보이는 것임
[코드]
#include <iostream>
#include<algorithm>
using namespace std;
int top=-1;
int stack[100000];
int main() {
int tc=0,num=0;
int count=0, pre=0, com=0;
cin>>tc;
cin.ignore();
for(int i=0;i<tc;i++){// 막대기의 개수만큼 입력받기
cin>>num;
cin.ignore();
stack[++top]=num;
}
com=stack[top--]; // 오른쪽 기준 가장 가까운 막대기의 높이 반환
count++;
while(top>-1){
pre = stack[top--];
if(com<pre) {// pre가 비교 숫자 com보다 높거나 같다면
count++; // 개수 증가
com = pre; // com update
}
}
cout<<count<<endl;
return 0;
}
[채점 결과]
* 4번을 틀렸던 이유는 같은 높이의 막대기도 보인다고 잘못 이해해서 틀렸었다,,
'CODE > BOJ' 카테고리의 다른 글
[C++] BOJ 2959 : 거북이 (0) | 2021.09.17 |
---|---|
[C++] BOJ 2752 : 세수정렬 (0) | 2021.09.17 |
[C++] BOJ 11279 : 최대힙 (0) | 2021.09.16 |
[C++] BOJ 1158 : 요세푸스 문제 (0) | 2021.09.16 |
[C++] BOJ 12605 : 단어순서 뒤집기 (0) | 2021.09.15 |