์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- suspense ๋์์๋ฆฌ
- emtion app router
- ๋ฐฑ์ค 1339๋ฒ js
- js
- ํ๋ก๊ทธ๋๋จธ์ค ๊ฑฐ๋ฆฌ๋๊ธฐ ํ์ธํ๊ธฐ
- ํ๋ก๊ทธ๋๋จธ์ค ๋ฌธ์์ด ์์ถ
- ๊ตฌ๋ฆํค
- TypeError: createContext only works in Client Components. Add the "use client" directive at the top of the file to use it. Read more:
- suspense ๋น๋๊ธฐ
- emotion RSC
- ๋ฐฑ์ค 1339๋ฒ ์๋ฐ์คํฌ๋ฆฝํธ
- ๋ฐฑ์ค 1339๋ฒ nodejs
- ์ฌ์ฉ์ฑ ๊ฐ์
- ๋ฆฌ์กํธ์ฟผ๋ฆฌ suspense
- next13 emotion
- suspense ๋ณ๋ชฉํ์
- ์ค์ฝํ
- ์ต์ ๋์ฒด์ด๋
- ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ์์ด ์์ถ
- app router emotion
- ๊ตฌ๋ฆํค ์ฑ๋ฆฐ์ง ํ๊ณ
- js ๊ฑฐ๋ฆฌ๋๊ธฐ ํ์ธํ๊ธฐ
- ๋ฐฑ์ค 2108 nodejs
- ์นด์นด์ค ์ฝํ
- ๊ตฌ๋ฆํค ์ฑ๋ฆฐ์ง
- js ๋ฌธ์์ด ์์ถ
- suspense react-query
- js ์ค์ฝํ
- ๋ฐฑ์ค 2108 ์๋ฐ์คํฌ๋ฆฝํธ
- ์๋ฐ์คํฌ๋ฆฝํธ ์ค์ฝํ
- Today
- Total
Lennon FE
[๋ฐฑ์ค 17140๋ฒ] ์ด์ฐจ์ ๋ฐฐ์ด๊ณผ ์ฐ์ฐ - ์๋ฐ์คํฌ๋ฆฝํธ(nodejs) ๋ณธ๋ฌธ
[๋ฐฑ์ค 17140๋ฒ] ์ด์ฐจ์ ๋ฐฐ์ด๊ณผ ์ฐ์ฐ - ์๋ฐ์คํฌ๋ฆฝํธ(nodejs)
Lennon 2022. 2. 17. 02:36https://www.acmicpc.net/problem/17140
const fs = require('fs');
let [input, ...matrix] = fs.readFileSync('dev/stdin').toString().trim().split('\n');
input = input.split(' ');
const [num, location] = [+input.pop(), input.map(Number)];
matrix = matrix.map((v) => v.split(' ').map(Number));
console.log(solution(matrix));
function solution(arr) {
if (verification(arr)) {
return 0;
}
let count = 1;
let answer = R_Calculate(arr);
if (verification(answer)) {
return count;
}
while (count < 100) {
count++;
if (answer.length >= answer[0].length) {
answer = R_Calculate(answer);
} else {
answer = C_Calculate(answer);
}
if (verification(answer)) {
return count;
}
}
return -1;
}
function R_Calculate(arr) {
const result = countNumber(arr);
const maxLength = Math.max(...result.map((v) => v.length));
return result.map((v) => {
while (v.length !== maxLength) {
v.push(0);
}
return v;
});
}
function C_Calculate(arr) {
const reverseMatrix = Array.from(Array(arr[0].length), () => Array(arr.length).fill(0));
for (let i = 0; i < arr.length; i++) {
for (let j = 0; j < arr[i].length; j++) {
reverseMatrix[j][i] = arr[i][j];
}
}
const result = countNumber(reverseMatrix);
const maxLength = Math.max(...result.map((v) => v.length));
const reverseResultMatrix = Array.from(Array(maxLength), () => Array(result.length).fill(0));
for (let i = 0; i < result.length; i++) {
for (let j = 0; j < result[i].length; j++) {
reverseResultMatrix[j][i] = result[i][j];
}
}
return reverseResultMatrix;
}
function verification(input) {
if (
input.length >= location[0] &&
input[0].length >= location[1] &&
input[location[0] - 1][location[1] - 1] === num
) {
return true;
} else {
return false;
}
}
function countNumber(arr) {
const result = arr.map((v) => {
const obj = {};
for (let j = 0; j < v.length; j++) {
if (v[j] === 0) continue;
!obj[v[j]] ? (obj[v[j]] = 1) : obj[v[j]]++;
}
const value = Object.entries(obj)
.sort((a, b) => {
if (a[1] !== b[1]) {
return a[1] - b[1];
} else {
return +a[0] - +b[0];
}
})
.flat()
.map(Number);
return value;
});
return result;
}
๊ณจ4 ๊ตฌํ๋ฌธ์ ๋ผ ๊ทธ๋ฐ์ง ๋ฐฑ์ค, ํ๋ก๊ทธ๋๋จธ์ค ๊ตฌํ ๋ฌธ์ ํผ ๊ฒ ์ค์ ์ด ๋ฌธ์ ๊ฐ ๊ฐ์ฅ ๊ท์ฐฎ์๋ค. ์๊ฒ ์ ๊ฒ ์์ ํ๋ฉด ๊ณ์ ์ผ์ด์ค๊ฐ ๋ง์ฝ์ด์๋ค.
๊ฐ๋จํ ์ค ์์์ง๋ง ์ฒซ ์ค๊ณ์ ์ค์์ฑ์ ๊นจ๋ฌ์๋ค.
์๋๋ถํฐ ํจ์๋ฅผ ์ดํด๋ณด๋ฉด
countNumber Func
ํด๋น ํจ์๋ ๋ฐฐ์ด์ด ์ ๋ ฅ์ผ๋ก ๋ค์ด์์ ๋ ๊ฐ ๋ฐฐ์ด์ ์์๋ค์ ๊ฐ์๋ฅผ ์ธ์ ๊ธ์ ์ ํ ๋๋ก ์ ๋ ฌํ ํ ๋ค์ ๋ฐฐ์ด ํํ๋ก ๋ฆฌํดํ๋ ํจ์์ด๋ค.
๋ฌด์๋ฏธํ๊ฒ ๋ค์ด๊ฐ 0์ ๋ฌด์ํ๋ค.
ex) [[1,2,3,5]] => [1,1,2,1,3,1,5,1]]
R_Calculate Func
R ์ฐ์ฐ์ ํ๋ ํจ์์ด๋ค. countNumber Func์ฐ์ฐ ํ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ง์ง๋ง์ 0์ ๋ฃ์ด์ค ํ๋ ฌ์ ํํ๋ฅผ ์ ์งํ๊ณ ๋ฆฌํดํ๋ค.
C_Calculate Func
C ์ฐ์ฐ์ ํ๋ ํจ์์ด๋ค. ๋ฐฐ์ด์ ํ๊ณผ ์ด์ ๋ฐ๊พผ ํ countNumber Func์ ํ ํ ๋ค์ ํ๊ณผ ์ด์ ๋ฐ๊ฟ ๋ง์ง๋ง์ 0์ ๋ฃ์ด์ค ํ๋ ฌ์ ํํ๋ฅผ ์ ์งํ๊ณ ๋ฆฌํดํ๋ค.
verification Func
A[r][c]์ ๋ค์ด์๋ ๊ฐ์ด k์ ๊ฒ์ฆํ๋ ํจ์์ด๋ค.
์ ๋ ฅ ๋ฐฐ์ด์ ํ๋ ฌ์ด ์ฃผ์ด์ง ๊ฐ (r, c)๊ฐ ๋ณด๋ค ์์์ผ ์ธ๋ฑ์ค๋ฅผ ๊ตฌํ ์ ์์ผ๋ฉฐ, ๋ฐฐ์ด์์ ํด๋น (r, c) ์ ๊ฐ์ด k์ธ์ง ํ์ธํ ํ
true, false๋ฅผ ๋ฆฌํดํ๋ ํจ์์ด๋ค.
solution Func
1. ์ฐ์ฐ ์๋ ์ ์ verification Func์ด ์ฑ๋ฆฝ๋๋ฉด ๋ฐ๋ก 0์ return ํ๋ค.
2. 3x3์ด ์ฒซ ์ ๋ ฅ์ด๋ฏ๋ก r์ฐ์ฐ์ ํด์ค๋ค.
3. ์ฒซ ์ฐ์ฐ์ ๋๋์ ๋ verification Func์ผ๋ก ๊ฒ์ฆํ๋ค.
4. while๋ฌธ์ ๋๋ฉฐ count๋ฅผ 1์ฉ ์ฆ๊ฐ์ํค๊ณ , ํ์ด ์ด๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ผ๋ฉด R์ฐ์ฐ์, ์์ผ๋ฉด C์ฐ์ฐ์ ํ๋ค.
5. ์ฐ์ฐ ๊ฒฐ๊ณผ๋ฅผ verification Func๋ก ๊ฒ์ฆํ๋ค. => true๋ฅผ ๋ฆฌํดํ๋ฉด count ๋ฆฌํด ํ ํจ์ ์ข ๋ฃ
'๐ฅ Algorithm > Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค 1744๋ฒ] ์ ๋ฌถ๊ธฐ - ์๋ฐ์คํฌ๋ฆฝํธ(nodejs) (0) | 2022.02.18 |
---|---|
[๋ฐฑ์ค 14888๋ฒ] ์ฐ์ฐ์ ๋ผ์๋ฃ๊ธฐ - ์๋ฐ์คํฌ๋ฆฝํธ(nodejs) (0) | 2022.02.18 |
[๋ฐฑ์ค 1541๋ฒ] ์์ด๋ฒ๋ฆฐ ๊ดํธ - ์๋ฐ์คํฌ๋ฆฝํธ(nodejs) (0) | 2022.02.15 |
[๋ฐฑ์ค 1966๋ฒ] ํ๋ฆฐํฐ ํ - ์๋ฐ์คํฌ๋ฆฝํธ(nodejs) (0) | 2022.02.15 |
[๋ฐฑ์ค 5430๋ฒ] AC - ์๋ฐ์คํฌ๋ฆฝํธ(nodejs) (0) | 2022.02.13 |