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차원 배열 활용 문제


문제 출처 : http://codeup.kr/JudgeOnline/problem.php?id=1678



반응형