[백준#C++] 테크노미로

dongwon·2021년 2월 14일
0

백준 알고리즘

목록 보기
5/7

문제

https://www.acmicpc.net/problem/14500

접근 과정

  1. 노가다..

코드

#define _CRT_SECURE_NO_DEPRECATE
#include <iostream>
using namespace std;

int n, m, ans, sum;
int A[505][505];

void input() {
	int i, j;
	scanf("%d%d",&n,&m);
	for (i = 1; i <= n; i++) {
		for (j = 1; j <= m; j++) {
			scanf("%d",&A[i][j]);
		}
	}
}

void case1(int i, int j) {					// 가로 일자
	sum = 0;
	if (j + 3 <= m) { 
		sum = sum + A[i][j] + A[i][j+1] + A[i][j+2] + A[i][j+3];
	}
	if (ans < sum) ans = sum;
}

void case2(int i, int j) {					// 세로 일자
	sum = 0;
	if (i + 3 <= n) {
		sum = sum + A[i][j] + A[i+1][j] + A[i+2][j] + A[i+3][j];
	}
	if (ans < sum) ans = sum;
}

void case3(int i, int j) {				// 뚱 사각형
	sum = 0;
	if (j + 1 <= m && i + 1 <= n) {
		sum = sum + A[i][j] + A[i + 1][j] + A[i][j + 1] + A[i + 1][j + 1];
	}
	if (ans < sum) ans = sum;
}

void case4(int i, int j) {				// L 자
	sum = 0;
	if (i + 2 <= n && j + 1 <= m) {
		sum = sum + A[i][j] + A[i + 1][j] + A[i + 2][j] + A[i + 2][j + 1];
	}
	if (ans < sum) ans = sum;
}

void case5(int i, int j) {				//L 자 대칭			
	sum = 0;
	if (j + 1 <= m && i - 2 >= 1) {
		sum = sum + A[i][j] + A[i][j+1] + A[i-1][j+1] + A[i -2][j +1];
	}
	if (ans < sum) ans = sum;
}

void case6(int i, int j) {				// ---ㄱ형
	sum = 0;
	if (j + 2 <= m && i + 1 <= n) {
		sum = sum + A[i][j] + A[i][j+1] + A[i][j+2] + A[i+1][j+2];
	}
	if (ans < sum) ans = sum;
}

void case7(int i, int j) {				
	sum = 0;
	if (j + 2 <= m && i + 1 <= n) {
		sum = sum + A[i][j] + A[i][j + 1] + A[i][j + 2] + A[i + 1][j];
	}
	if (ans < sum) ans = sum;
}

void case8(int i, int j) {				
	sum = 0;
	if (j + 1 <= m && i + 2 <= n) {
		sum = sum + A[i][j] + A[i][j + 1] + A[i+1][j + 1] + A[i + 2][j + 1];
	}
	if (ans < sum) ans = sum;
}

void case9(int i, int j) {				//ㄱ형 대칭
	sum = 0;
	if (j + 1 <= m && i+2 <=n) {
		sum = sum + A[i][j] + A[i][j+1] + A[i+1][j] + A[i+2][j];
	}
	if (ans < sum) ans = sum;
}

void case10(int i, int j) {
	sum = 0;
	if (j + 2 <=m && i -1 >=1) {
		sum = sum + A[i][j] + A[i][j+1] + A[i][j+2] + A[i-1][j+2];
	}
	if (ans < sum) ans = sum;
}

void case11(int i, int j) {
	sum = 0;
	if (j + 2 <= m && i + 1 <= n) {
		sum = sum + A[i][j] + A[i+1][j] + A[i+1][j+1] + A[i+1][j+2];
	}
	if (ans < sum) ans = sum;
}

void case12(int i, int j) {
	sum = 0;
	if (j + 2 <= m, i-1 >=1) {
		sum = sum + A[i][j] + A[i][j+1] + A[i][j+2] + A[i-1][j+1];
	}
	if (ans < sum) ans = sum;
}

void case13(int i, int j) {
	sum = 0;
	if (j + 1 <= m && i + 2 <= n) {
		sum = sum + A[i][j] + A[i+1][j] + A[i+1][j+1] + A[i+2][j];
	}
	if (ans < sum) ans = sum;
}

void case14(int i, int j) {
	sum = 0;
	if (j + 1 <= m && i + 1 <= n && i - 1 >= 1) {
		sum = sum + A[i][j] + A[i][j+1] + A[i-1][j+1] + A[i+1][j+1];
	}
	if (ans < sum) ans = sum;
}

void case15(int i, int j) {
	sum = 0;
	if (j + 2 <= m && i + 1 <= n) {
		sum = sum + A[i][j] + A[i][j+1] + A[i][j+2] + A[i+1][j+1];
	}
	if (ans < sum) ans = sum;
}

void case16(int i, int j) {
	sum = 0;
	if (j + 1 <= m && i+2 <=n) {
		sum = sum + A[i][j] + A[i+1][j] + A[i+1][j+1] + A[i+2][j+1];
	}
	if (ans < sum) ans = sum;
}

void case17(int i, int j) {
	sum = 0;
	if (j + 1 <= m && i + 1 <= n && i - 1 >= 1) {
		sum = sum + A[i][j] + A[i][j+1] + A[i+1][j] + A[i-1][j+1];
	}
	if (ans < sum) ans = sum;
}

void case18(int i, int j) {
	sum = 0;
	if (j + 2 <= m && i - 1 >= 1) {
		sum = sum + A[i][j] + A[i][j+1] + A[i-1][j+1] + A[i-1][j+2];
	}
	if (ans < sum) ans = sum;
}

void case19(int i, int j) {
	sum = 0;
	if (j + 2 <= m && i + 1 <= n) {
		sum = sum + A[i][j] + A[i][j+1] + A[i+1][j+1] + A[i+1][j+2];
	}
	if (ans < sum) ans = sum;
}

int main() {
	//freopen("input.txt", "r",stdin);
	input();
	int i, j;
	for (i = 1; i <= n; i++) {
		for (j = 1; j <= m; j++) {
			
			case1(i,j);
			case2(i, j);
			case3(i, j);
			case4(i, j);
			case5(i, j);
			case6(i, j);
			case7(i, j);
			case8(i, j);
			case9(i, j);
			case10(i, j);
			case11(i, j);
			case12(i, j);
			case13(i, j);
			case14(i, j);
			case15(i, j);
			case16(i, j);
			case17(i, j);
			case18(i, j);
			case19(i, j);
		}
	}
	printf("%d",ans);

}
profile
데이원컴퍼니 프론트엔드 개발자입니다.

0개의 댓글