Computer/Algorithm
Daily Algorithm - 철광석 제련
kentakang
2018. 4. 5. 21:46
반응형
문제
여러분은 철광석을 제련하는 공장의 사장이다.
이 공장에서는 5*5광석을 채집하여 공장에서는 3*3크기로 자를 수 있는 공구를 이용하여 3*3크기만큼만 채취하여 판매를 한다.
사장은 5*5 철광석에서 가능한 이득이 많이 되는 3*3부분을 채취하여 팔고자 한다.
5*5광석의 각 위치의 가치가 주어질 때, 가장 가치가 높은 3*3부분의 가치를 구하는 프로그램을 작성하시오.
입력
1) 5행 5열의 정수가 입력된다.
2) 입력되는 수는 모두 25개이며, 공백으로 구분된다.
3) 각 수 값은 모두 100이하의 자연수이다.
출력
최대 가치를 가지는 3*3영역 각 부분의 가치의 합을 출력한다.
예제 입력
1 1 1 1 1 1 1 2 2 2 1 1 2 2 2 1 1 2 2 2 1 1 1 1 1
예제 출력
18
풀이
#include <stdio.h>
int main()
{
int arr[5][5], sum, max = 0;
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
scanf("%d", &arr[i][j]);
}
}
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
sum = 0;
for (int k = i - 1; k <= i + 1; k++)
{
if (k < 0 || k > 4)
continue;
for (int y = j - 1; y <= j + 1; y++)
{
if (y < 0 || y > 4)
continue;
sum += arr[k][y];
}
}
if (sum > max)
max = sum;
}
}
printf("%d", max);
}
간단한 2차원 배열 활용 문제
반응형