728x90
반응형
#include<stdio.h>
#include<iostream>
#include<string.h>
using namespace std;
#define NS 21
int kArr[NS * 2 - 1];
int input[NS][NS];
int N,M;
int houseMax = 0x80000000;
void houseSafe() {
for (int ys = 0; ys < N; ys++) {
for (int xs = 0; xs < N; xs++) {
memset(kArr, 0, sizeof(kArr));
for (int ye = 0; ye < N; ye++) {
for (int xe = 0; xe < N;xe++) {
if (input[ye][xe] == 1) {
int k = abs(ys - ye) + abs(xs - xe)+1;
kArr[k]++;
}
}
}
int houseCnt=0;
// 계산해봅시다.
for (int k = 1; k <= N * 2 - 1; k++) {
houseCnt += kArr[k];
int cost = k * k + (k - 1)*(k - 1);
if (((M*houseCnt) - cost) >= 0) {
houseMax = houseMax < houseCnt ? houseCnt : houseMax;
}
}
}
}
}
void init() {
houseMax = 0x80000000;
cin >> N>>M;
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
cin >> input[i][j];
}
}
houseSafe();
}
int main(void) {
int T;
cin >> T;
for (int tc = 1; tc <= T; tc++) {
init();
cout << '#' << tc << " " << houseMax << endl;
}
return 0;
}
거리를 구하는 공식을 이용해서 현재 중심을 기준으로해서 k 값을 구합니다. 거리에 +1 이 k가 되고 그것에 해당되는
집을 kArr에 넣어주고 나중에 계산시 , 인원수를 중첩으로 더해가면서 0이상인 수 즉 양수 인경우에 집의 수의
최대값을 구하면되는 문제입니다. 정말 이렇게 듣고 보니 간단한 문제 아닌가요?
여러분들도 도전해보세요.
728x90
반응형
'알고리즘 모음집 > 알고리즘 (Algorithm)' 카테고리의 다른 글
[모의 SW 역량테스트] 원자 소멸 시뮬레이션 (0) | 2019.12.20 |
---|---|
[모의 SW 역량테스트] 무선 충전 (0) | 2019.12.07 |
[모의 SW 역량테스트] 벽돌 깨기 (0) | 2019.11.28 |
SW Expert Academy - [모의 SW 역량테스트] 디저트 카페 (0) | 2019.11.26 |
프로그래머스 - 2020 KAKAO BLIND RECRUITMENT 블록 이동하기 (0) | 2019.11.14 |
댓글