Programming/Algorithm

[Algorithm] C++ 봉우리(2차원 배열)

100winone 2019. 12. 26. 16:51

입력설명

첫 줄에 자연수 N이 주어진다.(1<=N<=50) 두 번째 줄부터 N줄에 걸쳐 각 줄에 N개의 자연수가 주어진다. 각 자연수는 100을 넘지 않는 다.

 

출력설명

봉우리의 개수를 출력하세요

 

입력예제

5 3 7 2 3 

3 7 1 6 1 

7 2 5 3 4 

4 3 6 4 1 

8 7 3 5 2

 

출력예제

10

 

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<vector>
#include<algorithm>
using namespace std;
int a[51][51];
int dx[4] = { -1, 0, 1, 0 };
int dy[4] = { 0, 1, 0, -1 };

int main() {
	int n, i, j, k, cnt = 0, flag;
	scanf("%d", &n);
	for (i = 1; i <= n; i++) {
		for (j = 1; j <= n; j++) {
			scanf("%d", &a[i][j]);
		}
	}
	for (i = 1; i <= n; i++) {
		for (j = 1; j <= n; j++) {
			flag = 0;
			for (k = 0; k < 4; k++) {
				if (a[i][j] <= a[i + dx[k]][j + dy[k]]) {
					flag = 1;
					break;
				}
			}
			if (flag == 0) cnt++;
		}
	}
	printf("%d\n", cnt);
	return 0;
}