본문 바로가기

cospro2급/cospro_4차

2021-05-22

cospro 9번 문제

 

위험한 지역 몇개인지 알려주기

 

문제 설명

4 x 4 크기 격자 모양 지형에 위험 지역이 몇 개인이 알고 싶다. 위험지역이란 동, 서, 남, 북 인접한 지역이 모두 해당 지역보다 높은 지역이다. 예를 들어 지역 높이가 아래와 같다면

3 6 2 8
7 3 4 2
8 6 7 3
5 3 2 9

표시된 영역은 인접한 지역이 모두 해당 지역보다 높은 위험지역이다. 

지역별 높이가 담긴 2차원 배열 height, height의 길이 height_len이 매개변수로 주어질 때, 위험 지역이 몇 개인지 return 하는 solution 함수를 완성한다.

 

매개변수 설명

지역별 높이가 담긴 2차원 배열 height, height의 길이 height_len이 매개변수로 주어진다. 

   각 지역의 높이는 1 이상 50 이하인 자연수이다.

   height_len은 항상 4이다.

 

return 값 설명

위험지역이 몇 개인지 return 한다.

 

예시

코드 설명

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

int solution(int height[][4], int height_len) {
    int count = 0;
  	for(int i=0; i<height_len; i++){
			for(int j=0; j<height_len; j++){
				if(height[i][j]<height[i][j-1])	//서
					if(height[i][j]<height[i-1][j])	//북
						if(height[i][j]<height[i+1][j])	//남	
							if(height[i][j]<height[i][j+1])	//동
								count++;
			}
		}
    return count;
}

int main() {
    int height[4][4] = {{3, 6, 2, 8}, {7, 3, 4, 2}, {8, 6, 7, 3}, {5, 3, 2, 9}};
    int height_len = 4;
    int ret = solution(height, height_len = 4);

    printf("solution 함수의 반환 값은 %d 입니다.\n", ret);
}

 

중첩 if문으로 문제를 풀었지만 이는 단지 조건이 너무 길어지는게 싫어서 했을 뿐이고 

if(height[i][j]<height[i][j-1] && height[i][j]<height[i-1][j] && height[i][j]<height[i+1][j] && height[i][j]<height[i][j+1]) count++;

 

이런식으로 해도 상관 없다. 

 

위험 지역을 구분할 기준점은 height[i][j]이다. 이 좌표를 기준으로 동, 서, 남, 북을 찾아낸다.

동은 j+1, 서는 j-1, 남은 i-1, 북은 i+1이다. 또한 위험 지역은 동서남북 모두 다 기준지역보다 높아야 하기 때문에

&&를 사용한다.

 

 

 

goorm

구름은 클라우드 기술을 이용하여 누구나 코딩을 배우고, 실력을 평가하고, 소프트웨어를 개발할 수 있는 클라우드 소프트웨어 생태계입니다.

www.goorm.io

 

'cospro2급 > cospro_4차' 카테고리의 다른 글

2021-05-22  (0) 2021.05.22
2021-05-21  (0) 2021.05.21
2021-05-21  (0) 2021.05.21
2021-05-20  (0) 2021.05.20
2021-05-20  (0) 2021.05.20