๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿง  ์•Œ๊ณ ๋ฆฌ์ฆ˜/์œ ํ˜•๋ณ„ ๋Œ€ํ‘œ๋ฌธ์ œ5

[๋‹ค์ต์ŠคํŠธ๋ผ][๋ฐฑ์ค€] 117799 ์ตœ์†Œ๋น„์šฉ ๊ตฌํ•˜๊ธฐ2 JS ๋ฌธ์ œ๋งํฌ ํ•œ ๋…ธ๋“œ์—์„œ ๋‹ค๋ฅธ ๋…ธ๋“œ๊นŒ์ง€์˜ ์ตœ์†Œ ๋น„์šฉ์„ ๊ตฌํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์ต์ŠคํŠธ๋ผ! ๋‹ค์ต์ŠคํŠธ๋ผ : ํ•œ ์ •์ ์—์„œ ๋‹ค๋ฅธ ๋ชจ๋“  ์ •์ ๊นŒ์ง€์˜ ์ตœ์†Œ ๋น„์šฉ์„ ๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋‹ค์ต์ŠคํŠธ๋ผ๋Š” ์šฐ์„ ์ˆœ์œ„ํ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ JS์—๋Š” ์šฐ์„ ์ˆœ์œ„ํ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ง์ ‘ ๊ตฌํ˜„ ์ ‘๊ทผ ๋ฐฉ๋ฒ• 1. ๋ฒ„์Šค ์ •๋ณด ์ธ์ ‘๋ฆฌ์ŠคํŠธ, ๊ฐ ๋…ธ๋“œ๊นŒ์ง€์˜ ์ตœ์†Œ ๋น„์šฉ์„ ์ €์žฅํ•  ๋ฐฐ์—ด(minArr), ์ด์ „์— ๋ฐฉ๋ฌธํ•œ ๋…ธ๋“œ๋ฅผ ์ €์žฅํ•  ๋ฐฐ์—ด(pre)์„ ๋งŒ๋“ ๋‹ค. 2. ์šฐ์„ ์ˆœ์œ„ ํ์— ์‹œ์ž‘ ๋…ธ๋“œ๋ฅผ ๋„ฃ์–ด์ค€๋‹ค 3. ํ๊ฐ€ ๋นŒ ๋•Œ๊นŒ์ง€ ๋…ธ๋“œ๋ฅผ ๊บผ๋‚ด์„œ minArr์™€ pre๋ฐฐ์—ด์„ ์—…๋ฐ์ดํŠธ ํ•œ๋‹ค 3๋ฒˆ์—์„œ ๋ฐฐ์—ด๋“ค์„ ์—…๋ฐ์ดํŠธ ํ•  ๋•Œ 1. minArr์— ์žˆ๋Š” ๊ฐ’์ด ์šฐ์„ ์ˆœ์œ„ ํ์—์„œ ๊บผ๋‚ธ ๊ฐ’๋ณด๋‹ค ์ž‘์„ ๊ฒฝ์šฐ, ๊บผ๋‚ธ ๊ฐ’์€ ์ตœ์†Œ ๋น„์šฉ์ด ์•„๋‹˜์œผ๋กœ continue; 2. minArr์— ์žˆ๋Š” ๊ฐ’๋ณด๋‹ค ์šฐ์„ ์ˆœ.. 2024. 1. 10.
[์œ„์ƒ์ •๋ ฌ][๋ฐฑ์ค€] 2252 JS ํ’€์ด ์œ„์ƒ์ •๋ ฌ : ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์—์„œ ๋…ธ๋“œ๋“ค๊ฐ„ ์„ ํ–‰ ์ˆœ์„œ๋ฅผ ์œ„๋ฐฐํ•˜์ง€ ์•Š๊ณ  ์ •๋ ฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฌํ˜„๋ฒ• 1. ๋งจ ์ฒ˜์Œ ๋ชจ๋“  ๊ฐ„์„ ์„ ์ฝ์œผ๋ฉฐ indegree ํ…Œ์ด๋ธ”์„ ์ฑ„์šด๋‹ค 2. indegree๊ฐ€ 0์ธ ์ •์ ๋“ค์„ ๋ชจ๋‘ ํ์— ๋„ฃ๋Š”๋‹ค 3. ํ์—์„œ ์ •์ ์„ ๊บผ๋‚ด์–ด ์œ„์ƒ ์ •๋ ฌ ๊ฒฐ๊ณผ์— ์ถ”๊ฐ€ํ•œ๋‹ค 4. ํ•ด๋‹น ์ •์ ์œผ๋กœ๋ถ€ํ„ฐ ์—ฐ๊ฒฐ๋œ ๋ชจ๋“  ์ •์ ์˜ indegree ๊ฐ’์„ 1 ๊ฐ์†Œ์‹œํ‚จ๋‹ค. ์ด ๋•Œ indegree๊ฐ€ 0์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ทธ ์ •์ ์„ ํ์— ์ถ”๊ฐ€ํ•œ๋‹ค 5. ํ๊ฐ€ ๋นŒ ๋•Œ๊นŒ์ง€ 3,4๋ฒˆ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค ์ข€ ๋” ์ž์„ธํ•œ ์„ค๋ช…์ด ํ•„์š”ํ•˜๋‹ค๋ฉด ์ถœ์ฒ˜: ๋ฐ”ํ‚น๋… ๋ธ”๋กœ๊ทธ https://blog.encrypted.gg/1020 ์œ„์ƒ ์ •๋ ฌ ๋ฌธ์ œ์— ์ ์šฉํ•˜๊ธฐ ๋ฌธ์ œ N๋ช…์˜ ํ•™์ƒ๋“ค์„ ํ‚ค ์ˆœ์„œ๋Œ€๋กœ ์ค„์„ ์„ธ์šฐ๋ ค๊ณ  ํ•œ๋‹ค. ๊ฐ ํ•™์ƒ์˜ ํ‚ค๋ฅผ ์ง์ ‘ ์žฌ์„œ ์ •๋ ฌํ•˜๋ฉด ๊ฐ„๋‹จํ•˜๊ฒ ์ง€๋งŒ, ๋งˆ๋•…ํ•œ ๋ฐฉ๋ฒ•์ด .. 2023. 12. 28.
[MST][๋ฐฑ์ค€] 1197 ์ตœ์†Œ ์ŠคํŒจ๋‹ ํŠธ๋ฆฌ JS ํ’€์ด ๐Ÿ’ก ์ ‘๊ทผ๋ฒ• 1. ๋ชจ๋“  ๊ฐ„์„ ๋“ค์„ ๋น„์šฉ์ˆœ์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ 2. ๋น„์šฉ์ด ์ž‘์€ ๊ฐ„์„ ๋ถ€ํ„ฐ ์„ ํƒํ•ด์„œ ๋…ธ๋“œ๋“ค์„ ๊ฐ™์€ ๊ทธ๋ž˜ํ”„๋กœ ํ•ฉ์ณ์คŒ. ๋งŒ์•ฝ ๋‘ ๋…ธ๋“œ๊ฐ€ ๊ฐ™์€ ๊ทธ๋ž˜ํ”„์— ํฌํ•จ๋˜์–ด ์žˆ๋‹ค๋ฉด ๋„˜์–ด๊ฐ. 3. ํŠธ๋ฆฌ์˜ ๊ฐ„์„ ์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ •์ ์˜ ๊ฐœ์ˆ˜-1์ด๋ฉด ๋ฐ˜๋ณต๋ฌธ break const filePath = process.platform === 'linux' ? '/dev/stdin' : './input.txt'; // ์ž…๋ ฅ๊ฐ’์ด ์ฒซ ๋ฒˆ์งธ ์ค„์—๋Š” ์ž…๋ ฅ ๊ฐ’์˜ ๊ธธ์ด(n), n๊ฐœ์˜ ์ค„์— ๊ฑธ์ณ์„œ ํ•œ ์ค„์— ํ•˜๋‚˜์˜ ์ž…๋ ฅ๊ฐ’์ด ์ฃผ์–ด์งˆ ๋•Œ const [n, ...input] = require('fs') .readFileSync(filePath) .toString() .trim() .split('\n'); function solution(V, E, Lis.. 2023. 12. 28.
MST ํฌ๋ฃจ์Šค์นผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ค๋ช… ํฌ๋ฃจ์Šค์นผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. ์‹ ์žฅ ํŠธ๋ฆฌ๋ž€? : ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์˜ ๋ถ€๋ถ„ ๊ทธ๋ž˜ํ”„ ์ค‘ ๋ชจ๋“  ์ •์ ์„ ํฌํ•จํ•˜๋Š” ํŠธ๋ฆฌ ์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ๋ž€? : ๊ฐ„์„ ์˜ ํ•ฉ์ด ์ตœ์†Œ์ธ ์‹ ์žฅ ํŠธ๋ฆฌ Union & Find ์•Œ๊ณ ๋ฆฌ์ฆ˜ : ๋‘ ์ •์ ์ด ๊ฐ™์€ ๊ทธ๋ž˜ํ”„์— ์†ํ•˜๋Š”์ง€ ํŒ๋ณ„ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ https://blog.naver.com/ndb796/221230967614 ํฌ๋ฃจ์Šค์นผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ 1. ๊ฐ„์„ ์˜ ํฌ๊ธฐ๋Œ€๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•˜๊ณ  ์ œ์ผ ๋‚ฎ์€ ๋น„์šฉ์˜ ๊ฐ„์„ ์„ ์„ ํƒ 2. ํ˜„์žฌ ์„ ํƒํ•œ ๊ฐ„์„ ์ด ์ •์  u,v๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฐ„์„ ์ด๋ผ๊ณ  ํ•  ๋•Œ 1. ๋งŒ์•ฝ u์™€ v๊ฐ€ ๊ฐ™์€ ๊ทธ๋ฃน์ด๋ผ๋ฉด ์•„๋ฌด ๊ฒƒ๋„ ํ•˜์ง€ ์•Š๊ณ  ๋„˜์–ด๊ฐ„๋‹ค 2.๋งŒ์•ฝ u์™€ v๊ฐ€ ๋‹ค๋ฅธ ๊ทธ๋ฃน์ด๋ผ๋ฉด ๊ฐ™์€ ๊ทธ๋ฃน์œผ๋กœ ๋งŒ๋“ค๊ณ  ํ˜„์žฌ ์„ ํƒํ•œ ๊ฐ„์„ ์„ ์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ์— ์ถ”๊ฐ€ํ•œ๋‹ค(union&find ์•Œ๊ณ ๋ฆฌ์ฆ˜.. 2023. 12. 28.
[BFS][๋ฐฑ์ค€] 7576 ํ† ๋งˆํ†  js ํ’€์ด ์šฐ์„  ์‹œ๊ฐ„์ดˆ๊ณผ๋กœ ์ฐพ์•„์˜ค์‹  ๋ถ„!!! queue๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•˜์ง€ ์•Š๊ณ  ๋ฐฐ์—ด ๋ฉ”์†Œ๋“œ shift ์“ฐ์‹œ๋ฉด ์‹œ๊ฐ„ ์ดˆ๊ณผ๋‚ฉ๋‹ˆ๋‹ค ใ… ใ…  ๐Ÿ’ก์ ‘๊ทผ๋ฐฉ๋ฒ• - ์ตœ์†Œ ์ผ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๊ฒƒ - ์ธ์ ‘ ํ† ๋งˆํ† ๋“ค์ด ๋จผ์ € ์ต๋Š” ๊ฒƒ -> BFS๋‹ค!! 1. ์ฐฝ๊ณ  ์•ˆ์— ์ต์–ด ์žˆ๋Š” ํ† ๋งˆํ† ๋“ค์„ ์ฐพ์•„์„œ ํ์— ๋„ฃ๊ณ  2. ์ต์–ด ์žˆ๋Š” ํ† ๋งˆํ† ์˜ ์ธ์ ‘ ํ† ๋งˆํ† ๋“ค์ด ์ต๋„๋ก BFS๋กœ ํƒ์ƒ‰ class Node { constructor(value) { this.value = value; this.next = null; } } class Queue { constructor() { this.first = null; this.last = null; this.size = 0; } enqueue(val) { var newNode = new Node(val); if (!this.fi.. 2023. 12. 27.