알고리즘/it 취업을 위한 알고리즘 문제풀이

19. 분노 유발자

고줭 2021. 5. 17. 15:12

문제

오늘은 수능이 끝난 다음날로 교장선생님은 1, 2학년 재학생들에게 강당에 모여 어벤져스 영 화를 보여준다고 하여 학생들이 강당에 모였습니다. 강당의 좌석은 영화관처럼 계단형이 아니라 평평한 바닥에 의자만 배치하고 학생들이 앉습니 다. 그런데 만약 앞자리에 앉은 키가 큰 학생이 앉으면 그 학생보다 앉은키가 작은 뒷자리 학 생은 스크린이 보이지 않습니다. 한 줄에 앉은키 정보가 주어지면 뒷사람 모두의 시야를 가려 영화 시청이 불가능하게 하는 분노유발자가 그 줄에 몇 명이 있는지 구하는 프로그램을 작성 하세요.

입력설명

첫 줄에 한 줄에 앉은 학생수 N(3<=N<=100)이 주어집니다. 두 번째 줄에 N명의 앉은 키 정보(45이상 100이하)가 앞 자리 학생부터 차례대로 주어집니다.

출력설명

자신의 뒷 사람 모두를 시청방해하는 학생수를 출력합니다.

입력예제

10
56 46 55 76 65 53 52 53 55 50

출력예제

3


#include <stdio.h>
int height[101];

int main(){
	freopen("input.txt", "rt", stdin);
	int i, n, count=0, max;
	scanf("%d", &n);
	
	for(i=1; i<=n; i++){
		scanf("%d", &height[i]);
	}
	max = height[n];
	
	for(i=n-1; i>=1; i--){
		if(height[i] > max){
			max = height[i];
			count++;
		}
	}
	printf("%d", count);
	
	return 0;
}

문제를보고 배열을 사용해서 풀면되겠다싶어서 선언은 했는데 어떻게 받아야하는지를 몰라서 애먹었네요 ㅎㅎ
반복문에대고 scanf("%d", &배열[i]); 하면 됩니다

이 문제의 핵심은 뒤에서부터 탐색을 하는건데요 앞에서부터 하려고했다가 고생했습니다

우선 맨뒤에 값을 max라는 변수에 담아 놓습니다. 후에 앞으로 하나씩 가면서 현재 max에 담겨있는 값보다 크다면 count++ 하면 됩니다