[SWEA/C++] 2001 파리 퇴치

Hanbi·2022년 5월 23일
0

Problem Solving

목록 보기
22/128
post-thumbnail
post-custom-banner

문제

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=2&contestProbId=AV5PzOCKAigDFAUq&categoryId=AV5PzOCKAigDFAUq&categoryType=CODE&problemTitle=&orderBy=RECOMMEND_COUNT&selectCodeLang=CCPP&select-1=2&pageSize=10&pageIndex=1

풀이

N이 작아서 문제대로 생각하면 풀림
N이 최대 15니까 arr[15][15]로 선언

처음에는 규칙 찾으려고 생각했는데, brute force가 가장 효율적일 때가 은근 많음🙉

코드

#include <iostream>
#include <string>

using namespace std;

int main() {
	int test_case;
	int T;

	cin >> T;
	for (test_case = 1; test_case <= T; ++test_case) {
		int N, M;
		int arr[15][15] = {0};

		cin >> N >> M;
		for (int i = 0; i < N; i++) {
			for (int j = 0; j < N; j++) {
				int n;
				cin >> n;
				arr[i][j] = n;
			}
		}

		int ans = 0;
		int num = N - M + 1;
		for (int I = 0; I < num; I++) {
			for (int J = 0; J < num; J++) {
				
				//숫자 합
				int sum = 0;
				for (int i = I; i < I+M; i++) {
					for (int j = J; j < J+M; j++) {
						sum += arr[i][j];
					}
				}

				if (ans < sum)
					ans = sum;
			}
		}

		cout << "#" << test_case << " " << ans << endl;
	}

	return 0;
}
profile
👩🏻‍💻
post-custom-banner

0개의 댓글