반응형
https://euler.synap.co.kr/problem=11
문제 해결 알고리즘
브루트 포스 알고리즘으로 푼다. 세로, 가로 대각선 2개 4개의 곱을 전부 비교해서 최댓값을 출력한다.
소스 코드
#include <bits/stdc++.h>
using namespace std;
long max_result = 0;
long arr[20][20];
int main(){
for(int i=0;i<20;i++){
for(int j=0;j<20;j++){
cin >> arr[i][j];
}
}
for(int i=0;i<20;i++){
for(int j=0;j<20;j++){
long v = 1, h = 1, d_1 = 1, d_2 = 1;
for(int k=0;k<4;k++){
if(i <= 16) v *= arr[i + k][j];
if(j <= 16) h *= arr[i][j + k];
if(i <= 16 && j <= 16) d_1 *= arr[i + k][j + k];
if(i >= 3 && j <= 16) d_2 *= arr[i - k][j + k];
}
max_result = max(max(max_result, v), max(max(h, d_1), d_2));
}
}
cout << max_result << '\n';
for(int i=0;i<20;i++){
for(int j=0;j<20;j++){
cout << arr[i][j] << ' ';
}
cout << '\n';
}
}
반응형
'알고리즘 문제 해결 > Project Euler' 카테고리의 다른 글
[수학] 프로젝트 오일러 6번 문제 (0) | 2021.10.15 |
---|---|
[수학, 브루트 포스] 프로젝트 오일러 3번 문제 (0) | 2021.10.07 |
[수학, 브루트 포스] 프로젝트 오일러 2번 문제 (0) | 2021.10.04 |
[수학] 프로젝트 오일러 1번 문제 (1) | 2021.10.02 |