C언어/백준

17608: 막대기

road23 2022. 9. 11. 23:22

자료구조

브론즈 2

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

 

17608번: 막대기

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

www.acmicpc.net

 

-결과

 

-코드

#include <stdio.h>
int main(){
    int N, hist[100001];
    int max=0, cnt=0;

    scanf("%d", &N);
    for (int i = 0; i < N; i++){
        scanf("%d", &hist[i]);
    }

    for (int i = N-1; i >= 0; i--){
        if (max < hist[i]){
            max = hist[i];
            cnt++;
        }
    }
    printf("%d", cnt);
    return 0;
}

 

-풀이

첫번째로 막대기의 개수 N을 입력받는다.

그리고 N의 정보를 입력받은 후에 배열에 저장해야 한다.

막대의 최대 길이를 이용해 보이는 막대의 개수를 알아내기 위해서 변수 max를 선언한다.

그리고 보이는 맥대의 개수를 cnt에 저장한다.

그 후 오른쪽에서 막대기를 확인하기 위해서 for문의 증감식을 i--로 작성하여 거꾸로 작동하도록 한다.

그 안에 if문을 작성하여 max가 i번째 막대보다 작다면 max에 i를 저장하고 cnt++를 해준다.