const input = require("fs")
.readFileSync("20230315/example10.txt")
.toString()
.trim()
.split("\n");
const n = input[0];
let ans = 0;
let arr = Array.from(Array(100), () => Array(100).fill(0));
console.log(arr.length);
for (t = 1; t <= n; t++) {
const tmp = input[t].split(" ").map((i) => parseInt(i));
console.log(tmp);
let r = tmp[0];
let c = tmp[1];
for (i = r; i < r + 10; i++) {
for (j = c; j < c + 10; j++) {
arr[i][j] += 1;
if (arr[i][j] == 1) ans++;
// if (++arr[i][j] == 1) ans++;
}
}
}
console.log(ans);
넓이 100을 100개의 조각으로 쪼개서 건드릴때마다 1씩 키워주고 1이되는 순간
숫자를 체크하는 것이 인상적이었다.
사실 나는 그것보다 더적은 횟수로 체크하는 방법을 시도하였지만, 아직 나에게는
최적화보다는 정답을 맞추는 것이 더 중요한 것 같다.
const input = require("fs")
.readFileSync("20230315/example8.txt")
.toString()
.trim()
.split("\n");
let max = -1;
let row = 0;
let column = 0;
for (let i = 0; i < input.length; i++) {
let rowArray = input[i].split(" ").map(Number);
let big = Math.max(...rowArray);
if (big > max) {
max = big;
row = i + 1;
column = rowArray.indexOf(big) + 1;
}
}
console.log(max);
console.log(row, column);
0으로 된 9x9배열을 고려하지 않아서 고생했다.
반례를 찾아보는 것도 상당히 오랜 시간이 걸렸고,
그러다보니 백준 문제푸는 방법에 대해 익숙해졌다.
max=0을 넣어서 문제가 생겼다 다음에는 심플하게 가장 작은값을 넣어야겠다.
let input = require("fs")
.readFileSync("20230315/example9.txt")
.toString()
.trim()
.split("\n");
let inputArray = [];
let result = "";
for (let i = 0; i < input.length; i++) {
inputArray[i] = input[i].split("");
}
let lengthMax = Math.max(
...input.map((el) => {
return el.length;
})
);
console.log(lengthMax);
console.log(inputArray);
for (let i = 0; i < lengthMax; i++) {
for (let j = 0; j < inputArray.length; j++) {
result += input[j][i] || "";
}
}
console.log(result);
다 잘풀었지만 공백일 때 대처하는 방법을 잘쓴 것 같아서 좋았고,
2차 행렬에서 X->Y순에서 Y->X순으로 넘어가는 방법에 대해 정리하고 가면 좋다고 생각하여 가져왔다.
var input = require("fs")
.readFileSync("20230315/example2.txt")
.toString()
.split("\n");
let numArray = input[1].split(" ");
let min = numArray[0];
let max = numArray[0];
for (let i = 1; i < numArray.length; i++) {
if (min > Number(numArray[i])) {
min = numArray[i];
} else if (max < Number(numArray[i])) {
max = numArray[i];
}
}
console.log(min, max);
//number로 값 변환해줄것
//length 쓸 것
number로 변환해주고 처리하는 것이 명확하다고 깨달았다.
숫자는 number로 에러 처리를 더 줄여줄 수 있다.
indexof는 문자열만 찾는다. 숫자인 경우 스트링을 해주자
배열을 넣는 경우 같은 주소로 넣어주어서 push를 하면 전부다 같이 push가 되었다.
Array.from() 은 문자열 등 유사 배열(Array-like) 객체나 이터러블한 객체를 배열로 만들어주는 메서드입니다.
let arr = Array.from(Array(100), () => Array(100).fill(0));
console.log(Array.from('foo'));
// Expected output: Array ["f", "o", "o"]
console.log(Array.from([1, 2, 3], x => x + x));
// Expected output: Array [2, 4, 6]
// 유사 배열 객체를 배열로 만드는 예시
console.log(Array.from({ 0: "찬민", 1: "희진", 2: "태인", length: 3 }));
// [ '찬민', '희진', '태인' ]
// 3. 함수의 매개변수들을 순서대로 배열로 만드는 예시
const funcA = (...arguments) => {
return Array.from(arguments)
}
console.log(funcA(1,2,3,4,5));
// [ 1, 2, 3, 4, 5 ]
const arr = Array.from(Array(31), (_, index) => index + 1);
console.log(arr);
//위와 같은 의미
const arr = [];
for (let i = 1; i <= 31; i++) {
arr.push(i);
}
절대값 구하는 메소드
문자를 정수로 바꿔준다.
parseInt("10"); // 10
문자열 "10"을 숫자로 변환하여 정수 10을 리턴합니다.
parseInt("-10"); // -10
문자열 "-10"을 숫자로 변환하여 정수 음수 -10을 리턴합니다.
parseInt("10.9"); // 10
문자열 타입의 실수값은 소수점을 제거한 후, 정수값만 리턴합니다.
parseInt(10); // 10
파라미터로 문자열이 아닌 다른 타입의 값이 전달되면,
파라미터를 문자열로 변환하여 처리합니다.
parseInt("10n"); // 10
parseInt("10nnn13"); // 10
문자열의 첫글자가 숫자이고, 그 이후에 숫자가 아닌 다른 문자열이 나올 경우
숫자가 아닌 문자 이후의 값은 무시하고,
그 이전의 숫자만 정수로 변환합니다.
parseInt(" 10"); // 10
문자열의 첫글자는 반드시 숫자여야 하지만, 처음에 오는 공백 문자는 허용됩니다.
parseInt("10 "); // 10
문자열의 첫글자가 숫자이면, 뒤에 오는 공백은 무시됩니다.
parseInt("k10"); // NaN
문자열의 첫글자가 숫자가 아니면, NaN(Not a Number)를 리턴합니다.