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

 

17608번: 막대기

아래 그림처럼 높이만 다르고 (같은 높이의 막대기가 있을 수 있음) 모양이 같은 막대기를 일렬로 세운 후, 왼쪽부터 차례로 번호를 붙인다. 각 막대기의 높이는 그림에서 보인 것처럼 순서대로

www.acmicpc.net

 

 

[난이도] Bronze3
[유형] 구현

[풀이]
우측에서 바라봤을 때 현재 보이는 막대기의 높이만 cur 저장해주면서
다음 막대가 cur보다 높으면 cur을 이 막대의 높이로 업데이트 하고 정답에 1을 더해줍니다.
만약 cur보다 작으면 보이지 않는 막대이므로 무시해줍니다.

 

#include <cstdio>
using namespace std;
int N,ans,cur,a[100000];
int main(){
    scanf("%d",&N);
    for(int i=0;i<N;i++) scanf("%d",&a[i]);
    for(int i=N-1;i>=0;i--) {
        if(a[i]>cur){
            cur=a[i];
            ans++;
        }
    }
    printf("%d",ans);
}


https://github.com/has2/Problem-Solving/blob/master/boj-solved.ac/Bronze3/17608.cpp

+ Recent posts