728x90
반응형
목차
https://www.acmicpc.net/problem/21608
문제
문제 구현 방향
문제의 호흡이 길어서 그렇지 잘 따라가면 할 수 있는 문제이다.
나는 문제의 조건을 정렬을 통해 해결해 주었다.
코드 구현
const input = require("fs")
.readFileSync("./dev/stdin", "utf-8")
.trim()
.split("\n");
let N = +input[0];
let person = Math.pow(N, 2) + 1;
let stList = Array.from(Array(person), () => Array(5));
let board = Array.from(Array(person), () => Array(person).fill(0));
let dx = [0, 0, 1, -1];
let dy = [1, -1, 0, 0];
function choice1(board, likeN) {
let ans = [];
for (let i = 1; i <= N; i++) {
for (let j = 1; j <= N; j++) {
let lks = 0;
let et = 0;
if (board[i][j]) continue;
for (let p = 0; p < 4; p++) {
let nx = j + dx[p];
let ny = i + dy[p];
if (nx < 1 || nx > N || ny < 1 || ny > N) continue;
if (likeN.includes(board[ny][nx])) lks++;
if (board[ny][nx] === 0) et++;
}
ans.push({ x: j, y: i, lks: lks, et: et });
}
}
ans.sort((a, b) => {
if (a.lks !== b.lks) return b.lks - a.lks;
else {
if (a.et !== b.et) return b.et - a.et;
else {
if (a.y !== b.y) return a.y - b.y;
else return a.x - b.x;
}
}
});
if (ans.length === 0) {
return 0;
}
return ans[0];
}
function satisfy(stList) {
let sum = 0;
for (let i = 1; i <= N; i++) {
for (let j = 1; j <= N; j++) {
let cnt = 0;
let k = board[i][j];
for (let p = 0; p < 4; p++) {
let nx = j + dx[p];
let ny = i + dy[p];
if (nx < 1 || nx > N || ny < 1 || ny > N) continue;
if (stList[k].includes(board[ny][nx])) cnt++;
}
switch (cnt) {
case 0: {
break;
}
case 1: {
cnt = 1;
break;
}
case 2: {
cnt = 10;
break;
}
case 3: {
cnt = 100;
break;
}
case 4: {
cnt = 1000;
break;
}
}
sum += cnt;
}
}
console.log(sum);
}
for (let i = 1; i < input.length; i++) {
let ar = input[i].trim().split(" ").map(Number);
for (let j = 1; j <= 4; j++) {
stList[ar[0]][j] = ar[j];
}
let tg;
if ((tg = choice1(board, ar.slice(1))) !== 0) {
board[tg.y][tg.x] = ar[0];
}
}
satisfy(stList);
반응형
'백준 문제풀이 > Nodejs' 카테고리의 다른 글
[백준][구현] 21610 마법사 상어와 피바라기 NodeJs 구현 (0) | 2024.11.04 |
---|---|
[백준][이분 탐색] 2467 용액 NodeJs 구현 (0) | 2024.11.03 |
[백준][LCS] 9251 LCS NodeJs 구현 (0) | 2024.10.31 |
[백준][문자열] 전화번호 목록 NodeJs 구현 (0) | 2024.10.30 |
[백준][구현] 18111 마인크래프트 NodeJs 구현 (2) | 2024.10.27 |