728x90
반응형
목차
https://www.acmicpc.net/problem/1260
문제
NodeJs 구현 시 주의할 점
아래와 같이 인접리스트를 초기화해야 typeError가 나지 않는다.
let vector = Array.from({ length: 10003 }, () => []);
|| 연산자를 통해 undefined가 뜨지 않도록 막아 준다.
for (let i = 0; i < nodes.length; i++) {
vector[nodes[i][0]] = [...(vector[nodes[i][0]] || []), nodes[i][1]];
vector[nodes[i][1]] = [...(vector[nodes[i][1]] || []), nodes[i][0]];
}
sort안에 정확히 명시 해주어야 오류가 안난다. 출력은 잘되더라도 백준에서는 틀리게 된다..
for(let i=1; i<=N; i++){
if(vector[i])
vector[i].sort((a,b)=> a-b);
}
코드 구현
const input = require("fs")
.readFileSync("../test.txt", "utf-8")
.trim()
.split("\n");
let order = input[0].split(" ").map(Number);
input.splice(0, 1);
let nodes = [];
for (let i = 0; i < input.length; i++) {
nodes.push(input[i].trim().split(" ").map(Number));
}
let [N, M, V] = order;
let vector = Array.from({ length: 10003 }, () => []);
let visit = new Array(10003).fill(0);
function dfs(cur) {
process.stdout.write(`${String(cur)} `);
visit[cur] = 1;
for (let i = 0; i < vector[cur].length; i++) {
if (!visit[vector[cur][i]]) {
dfs(vector[cur][i]);
}
}
}
let queue = [];
function bfs(start) {
queue.push(start);
visit[start] = 1;
while (queue.length) {
let cur = queue.shift();
process.stdout.write(`${String(cur)} `);
for (let i = 0; i < vector[cur].length; i++) {
if (visit[vector[cur][i]]) continue;
queue.push(vector[cur][i]);
visit[vector[cur][i]] = 1;
}
}
}
for (let i = 0; i < nodes.length; i++) {
vector[nodes[i][0]] = [...(vector[nodes[i][0]] || []), nodes[i][1]];
vector[nodes[i][1]] = [...(vector[nodes[i][1]] || []), nodes[i][0]];
}
for(let i=1; i<=N; i++){
if(vector[i])
vector[i].sort((a,b)=> a-b);
}
dfs(V);
visit.fill(0);
console.log();
bfs(V);
반응형
'백준 문제풀이 > Nodejs' 카테고리의 다른 글
[백준][dp] 2225 합분해 NodeJs 구현 (1) | 2024.10.19 |
---|---|
[백준][구현] 20057 마법사 상어와 토네이도 NodeJs 구현 (0) | 2024.10.18 |
[백준][구현] 20056 마법사 상어와 파이어볼 NodeJs 구현 (1) | 2024.10.17 |
[백준][백트래킹] 15650 N과 M NodeJs 구현 (1) | 2024.10.14 |
[백준][정렬] 11651 좌표 정렬하기2 NodeJs 구현 (0) | 2024.10.11 |