본문 바로가기

Study/Baekjoon & SW Expert Academy

[SW Expert Academy : 2001번 파리 퇴치]

안녕하세요. 오늘은 SW Expert Academy의 2001번 파리 퇴치를 가져와 봤습니다.

 

역시나 SW Expert Academy의 문제는 직접 홈페이지에 들어가셔서 보셔야 할 것 같습니다.

 

 

홈페이지: https://swexpertacademy.com/main/code/problem/problemList.do?problemTitle=2001&orderBy=FIRST_REG_DATETIME&select-1=&pageSize=10&pageIndex=1#none

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

 

마찬가지로, 충분한 고민 후에 잘 안풀리신 다면 다음의 코드를

참고하시면 될 것 같아요~

 

 

 

˙

˙

˙

˙

˙

 

 

 

 

 

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
 
 
int main() {
 
    int test;   //testcase
    int n;
    int m;
    int cnt = 1;
 
    cin >> test;
 
    while (test--) {
 
        vector<int>max_num;
        int arr[15][15];
 
        cin >> n >> m;
 
        if (m > n) return -1;
 
        for (int i = 0; i < n; i++) {
 
            for (int j = 0; j < n; j++) {
 
                cin >> arr[i][j];
 
            }
 
        }
 
        int temp = 0;
 
        for (int z = 0; z <= n - m; z++) {
 
            for (int k = 0; k <= n - m; k++) {
 
                for (int i = 0; i < m; i++) {
 
                    for (int j = 0; j < m; j++) {
 
                        temp += arr[i + z][j+ k];
 
                    }
 
                }
                max_num.push_back(temp);
                temp = 0;
 
            }
 
        }
 
        sort(max_num.begin(), max_num.end());
        cout << "#" << cnt++ << " ";
        cout << max_num.back();
        cout << "\n";
 
 
    }
 
    return 0;
}

 

 

sort라는 함수는 <algorithm>에 포함되어 있는데요. 벡터를 정렬해줍니다.

N은 영역의 크기이고, M은 파리채의 크기이며,

4중 포문을 썼는데 이유는 영역이 2개이므로 z와 k는 n영역을 i와 j는 m영역을 다룬다고 생각하시면 될 것 같습니다.