문제 유형
기본문제
배운점
3 3
1 1 1
2 2 2
0 1 0
3 3 3
4 4 4
5 5 100
위 입력을 다음코드로 2차원 배열에 넣을 수 있다.
문제도 문제인데 입출력이 너무 어렵다.
var input = fs
.readFileSync(BOJkey ? "./자바스크립트로/2738/input.txt" : "./dev/stdin")
.toString()
.trim()
.split("\n")
.map((x) =>
x
.trim()
.split(" ")
.map((x) => +x)
);
기존 코드는 array 에 바로 arr 를 넣어줬는데 문제가 생겼다.
이는 shallow copy가 되어서 3 X 3 배열 이라고 할때 첫번째줄을 수정하면 2번째 3번째 배열 모두 수정이 되는 오류가 발생했다.
const [n, m] = input.shift();
let arr = new Array(m);
let array = [];
arr.fill(0);
for (let i = 0; i < n; i++) {
array.push(arr);
}
스프레드 연산자를 통해 해결했다.
const [n, m] = input.shift();
let arr = new Array(m);
let array = [];
arr.fill(0);
for (let i = 0; i < n; i++) {
array.push([...arr]);
}
다른 분 코드를 보니 이런식으로 2차원 배열을 선언하셨더라.
let array = Array.from(Array(n), () => Array(m).fill(0));
문제풀이
const fs = require("fs");
BOJkey = true;
var input = fs
.readFileSync(BOJkey ? "./자바스크립트로/2738/input.txt" : "./dev/stdin")
.toString()
.trim()
.split("\n")
.map((x) =>
x
.trim()
.split(" ")
.map((x) => +x)
);
const [n, m] = input.shift();
let arr = new Array(m);
let array = [];
arr.fill(0);
for (let i = 0; i < n; i++) {
array.push([...arr]);
}
// console.log(array);
// console.log(arr);
// console.log(input);
for (let i = 0; i < n; i++) {
for (let j = 0; j < m; j++) {
array[i][j] = input[i][j] + input[i + n][j];
}
}
let answer = "";
for (let i = 0; i < n; i++) {
for (let j = 0; j < m; j++) {
answer += array[i][j].toString() + " ";
}
answer += "\n";
}
console.log(answer);
// console.log(input);
'공부기록 > 자바스크립트 코딩테스트' 카테고리의 다른 글
[프로그래머스/JS] 모의고사 (0) | 2022.06.16 |
---|---|
[프로그래머스/JS] 완주하지 못한 선수 (0) | 2022.06.16 |
프로그래머스/JS 키패드 누르기 (0) | 2022.06.15 |
프로그래머스/JS 소수 만들기 (0) | 2022.06.14 |
자바스크립트 순열 , 조합 , 중복조합 (0) | 2022.06.14 |