雲Lv 3-遊園地
コード#コード#
クラウドプラットフォームでテストコードに遭遇したので、練習しながら問題を解きます.
問題はコードモンスターの講義にあるようです.制限条件が小さいので、四重For文で解決すると、既存の位置を覚えたり、より良い処理方法があるかもしれませんが、まず大量の量を解放する必要があるのでスキップしました.
// 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
、最近よく問題を解いて、I/Oはとても不便です...あらかじめテンプレートを作っておけば良いのですが、入出力でしっかり練習して塞がないようにしましょう.問題はコードモンスターの講義にあるようです.制限条件が小さいので、四重For文で解決すると、既存の位置を覚えたり、より良い処理方法があるかもしれませんが、まず大量の量を解放する必要があるのでスキップしました.
Reference
この問題について(雲Lv 3-遊園地), 我々は、より多くの情報をここで見つけました https://velog.io/@cookncoding/구름Lv3-놀이공원テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol