반응형
문제
1번 컴퓨터를 통해 웜 바이러스에 걸리게 되는 컴퓨터의 수를 출력하는 프로그램을 작성하시오.
풀이
BFS(너비우선탁색), Queue(큐)를 이용하여 해결
- 주어진 input값으로 이루어진 graph를 생성
- 컴퓨터들의 상태가 담길 distance를 생성
- 1번 컴퓨터와 연결된 모든 컴퓨터를 0 => 1 로 변경
- distance 배열중 1인 요소들의 개수를 return
Code
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');
const [total, node, ...list] = input
const graphElements = list.map(ele => ele.split(' ').map((node) => Number(node)))
const graph = Array.from(Array(Number(total) + 1), () => [])
graphElements.forEach(([start, dest]) => {
graph[start].push(dest);
graph[dest].push(start)
})
const distance = Array(Number(total) + 1).fill(0)
const queue = [1];
while(queue.length > 0) {
const start = queue.shift();
graph[start].forEach(dest => {
if (distance[dest] === 0) {
queue.push(dest);
distance[dest] = 1
}
})
}
const answer = distance.filter(node => node === 1).length - 1;
console.log(answer)
반응형
'Algorithm' 카테고리의 다른 글
[Programmers] LV1: 카카오 신규아이디 추천 (JavaScript) (0) | 2022.05.12 |
---|---|
[Programmers] 크레인 인형뽑기 게임 (JavaScript) (0) | 2022.05.07 |
[Programmers] LV2 영어끝말잇기 (0) | 2022.05.06 |
[Programmers] JadenCase 문자열 만들기 (JavaScript) (0) | 2022.04.27 |
[Programmers] 소수 만들기 (JavaScript) (0) | 2022.04.26 |