// Run by Node.js
const readline = require('readline');
const solution = (N, K, data) => {
let count = 0;
let min = 99999;
let test = []
// 100 * 100 * 10 * 10 = 1000000 -> 1초
for(let i=0;i<=N-K;i++) {
for(let j=0;j<=N-K;j++) {
for(let q=i; q<i+K; q++) {
for(let r = j; r< j+K;r++) {
if(data[q][r] === '1') count++;
}
}
test = []
if(count < min) min = count;
count = 0;
}
}
return min;
}
(async () => {
let rl = readline.createInterface({ input: process.stdin });
let T = null;
let N = null, K = null;
let info = null;
let data = [];
let countT = 0;
let countN = 0;
for await (const line of rl) {
// console.log('Hello Goorm! Your input is', line);
if(!T) {
T = +line;
} else if(!N && !K) {
// console.log(line);
[N, K] = line.split(' ').map((el) => +el)
} else {
data.push(line.split(' '))
countN += 1; // data를 입력받으면 countN을 증가시켜주고
}
if (countN == N) { // N만큼 data를 잘 입력 받았으면
const res = solution(N, K, data); // solution을 호출하고
console.log(res);
N = null; // T, countT를 제외한 값들을 초기화해준다.
K = null;
countN = 0;
data = [];
countT += 1; // 그리고 테스트 케이스 하나를 통과했으니 countT를 1 올려준다.
}
if (countT === T) { // 입력받은 T 만큼 테스트 케이스를 통과하게되면
rl.close(); // rl.close()를 호출하고
}
if(T === countT)
{
rl.close();
}
}
process.exit();
})();
#include<cstdio>
#include<cstdlib>
#include<memory.h>
#include<iostream>
#include<algorithm>
#include <limits.h>
using namespace std;
int get_minimum_trashes(int **waste, int N, int K) {
int answer = INT_MAX;
int count = 0;
for(int i=0;i<=N-K;i++) {
for(int j=0;j<=N-K;j++) {
for(int q=i;q<i+K;q++) {
for(int r=j;r<j+K;r++) {
if(waste[q][r] == 1) count++;
}
}
if(count < answer) answer = count;
count = 0;
}
}
return answer;
}
void test_case(int caseIndex) {
int N, K;
scanf("%d %d", &N, &K);
int **wastes = new int *[N];
for (int r = 0; r < N; r += 1) {
wastes[r] = new int[N];
for (int c = 0; c < N; c += 1) {
scanf("%d", &wastes[r][c]);
}
}
int answer = get_minimum_trashes(wastes, N, K);
printf("%d\n", answer);
for (int r = 0; r < N; r += 1) {
delete[] wastes[r];
}
delete[] wastes;
}
int main() {
int caseSize;
scanf("%d", &caseSize);
for (int caseIndex = 0; caseIndex < caseSize; caseIndex += 1) {
test_case(caseIndex);
}
return 0;
}
구름 플랫폼에서 코딩테스트 볼 일이 생겨서 연습 겸 문제를 풀었다. Javascript
로 요새 문제를 자주 푸는데 입출력이 너무 불편하다...ㅠㅠㅠ 템플릿을 미리 만들어 둘 수 있으면 좋을 거 같은데 입출력에서 막히지 않게 연습을 잘 해야겠다.
문제는 코딩 몬스터님의 강의에 있는 문제 같다. 제한 조건이 작아서 4중 For문으로 해결했는데 기존의 위치를 기억하고 처리하거나 더 좋은 방식이 있을 거 같은데 일단은 양을 많이 풀어야할 거 같아서 넘어갔다.