250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 호텔 대실
- mock date
- 귤 고르기
- 날짜 테스트
- jest
- 테이블 해시 함수
- 헤르메스 엔진
- 리액트네이티브 엔진
- 통신망분석
- 자바스크립트
- 프로그래머스
- mutationobserver
- 중첩 점
- Leetcode #javascript #알고리즘 #Algorithms #js
- 구름톤 챌린지
- 구름톤
- Hermes Engine
- nextjs-performance
- ResizeObserver
- 리액트네이티브
- nextjs
- 테스트 Date
- 과제 진행하기
- 최솟갑 구하기
- 구름톤챌린지
- JavaScript
- Jest uuid syntax
- 연결 요소 제거하기
- Google 애널리틱스
- create-next-app
Archives
- Today
- Total
나만보는개발공부블로그
구름톤 챌린지 17일차 통신망 분석 [Javascript] 본문
그래프문제로 union find로 통해 분리하고 주어진 조건에 정렬하는 문제이다.
const readline = require('readline');
let rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
let input = [];
rl.on('line', (line) => {
input.push(line);
});
rl.on('close', () => {
let [n,m] = input[0].split(" ").map((v) => parseInt(v));
let parent = Array.from({length:n + 1}, (_,i)=>i);
let edges = Array.from({length:n + 1}, ()=> 0);
function find(v) {
if(parent[v] !== v) parent[v] = find(parent[v]);
return parent[v];
}
function union(a,b) {
a = find(a);
b = find(b);
if(a>b){
parent[a] = b;
} else {
parent[b] = a;
}
}
for(let i = 0; i<m; ++i){
const [a,b] = input[i+1].split(" ").map((v)=>parseInt(v));
edges[a] = edges[a] + 1;
union(a,b);
}
const components = {};
for(let i = 1; i<parent.length; ++i) {
if(components[find(i)]){
components[find(i)].push(i);
} else {
components[find(i)] = [i]
}
}
let groups = [];
for(const group of Object.values(components)){
let edgeCount = group.reduce((v,c) => v + edges[c],0)
let density = edgeCount / group.length;
groups.push({
density: density,
group: group,
length: group.length,
smallestComputer: Math.min(...group)
})
}
groups.sort((a,b) => b.density - a.density || a.length - b.length ||a.smallestComputer - b.smallestComputer)
console.log(groups[0].group.join(" "))
})
'Algorithms' 카테고리의 다른 글
구름톤 챌린지 19일차 대체경로 [Javascript] (0) | 2023.09.07 |
---|---|
구름톤 챌린지 18일차 중첩 점 [Javascript] (0) | 2023.09.06 |
Backtracking (0) | 2021.04.25 |
완전탐색 (0) | 2021.04.10 |
최단 경로 알고리즘 - 다익스트라 최단 경로 알고리즘 (0) | 2021.04.08 |