๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋ก์ „์ฒด ๊ธ€ (166)

Unfazedโ—๏ธ๐ŸŽฏ

MAC ๊ณ„์ธต - CSMA/CD (1, Non, p-persistent CSMA, LLC ํ”„๋ ˆ์ž„, MAC ํ”„๋ ˆ์ž„, ํ—ˆ๋ธŒ, ์Šค์œ„์น˜)

IEEE 802.3์€ 1-persistent CSMA/CD ๋ฐฉ์‹์˜ LAN ํ™˜๊ฒฝ์— ๊ด€ํ•ด ๊ทœ์ •ํ•œ ํ‘œ์ค€์•ˆ์ด๋ฉฐ, ๊ณต์œ  ๋ฒ„์Šค๋กœ ์—ฐ๊ฒฐํ•œ ํ˜ธ์ŠคํŠธ ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ์ „์†ก์— ๊ด€ํ•œ ์‚ฌํ•ญ์„ ๋‹ค๋ฃฌ๋‹ค. ์ด๋”๋„ท(Ethernet)์€ ์›๋ž˜ IEEE 802.3 ํ‘œ์ค€์•ˆ์„ ์‹ค์ œ๋กœ ๊ตฌํ˜„ํ•œ ์ œํ’ˆ์ด์ง€๋งŒ, ํ˜„์žฌ๋Š” ๋” ์ผ๋ฐ˜ํ™”๋œ ์šฉ์–ด๋กœ ์‚ฌ์šฉ๋œ๋‹ค. ์‹ ํ˜ธ ๊ฐ์ง€ ๊ธฐ๋Šฅ๊ณต์œ  ๋ฒ„์Šค ๊ตฌ์กฐ์—์„œ ํ˜ธ์ŠคํŠธ ๊ฐ„ ํ”„๋ ˆ์ž„ ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด ํ”„๋ ˆ์ž„์„ ์ „์†กํ•˜๊ธฐ ์ „์— ๋‹ค๋ฅธ ํ˜ธ์ŠคํŠธ๊ฐ€ ๊ณต์œ  ๋ฒ„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค. ์ด๋Š” ์ „์†ก ์„ ๋กœ์— ํ๋ฅด๋Š” ์‹ ํ˜ธ๋ฅผ ๊ฐ์ง€ํ•˜๋Š” ๊ธฐ๋Šฅ์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ „์†ก ๋งค์ฒด์˜ ์‹ ํ˜ธ๋ฅผ ๊ฐ์ง€ํ•ด ํ”„๋ ˆ์ž„์˜ ์ „์†ก ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์„ ์‹ ํ˜ธ ๊ฐ์ง€(Carrier Sense) ํ”„๋กœํ† ์ฝœ์ด๋ผ ํ•œ๋‹ค. ์‹ ํ˜ธ ๊ฐ์ง€ ํ”„๋กœํ† ์ฝœ์—์„œ๋Š” ์„ ๋กœ์˜ ์ „๋‹ฌ ์ง€์—ฐ์ด ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ๋งŽ์ด ์ค€๋‹ค..

MAC ๊ณ„์ธต - IEEE 802 ์‹œ๋ฆฌ์ฆˆ (MAC&LLC ๊ณ„์ธต, LAN ํ‘œ์ค€์•ˆ, CSMA/CD, ํ† ํฐ ๋ฒ„์Šค, ํ† ํฐ ๋ง)

์›๊ฑฐ๋ฆฌ์— ์žˆ๋Š” ํ˜ธ์ŠคํŠธ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” WAN๊ณผ ๋‹ฌ๋ฆฌ LAN ํ™˜๊ฒฝ์€ ๊ทผ๊ฑฐ๋ฆฌ์— ๋ถ„ํฌ๋œ ํ˜ธ์ŠคํŠธ๋ฅผ ์—ฐ๊ฒฐํ•œ๋‹ค.LAN ํ™˜๊ฒฝ์—์„œ๋Š” WAN ํ™˜๊ฒฝ๋ณด๋‹ค ํšจ์œจ์ ์ธ ์ „์†ก ๊ด€๋ฆฌ๋ฅผ ํ†ตํ•ด ๋„คํŠธ์›Œํฌ์˜ ์ „์†ก ํšจ์œจ์„ ๊ทน๋Œ€ํ™”ํ•ด์•ผ ํ•œ๋‹ค. ๋„คํŠธ์›Œํฌ์˜ ์ „์†ก ์†๋„๋Š” ์ฃผ๋กœ ์ „์†ก ๋งค์ฒด์˜ ์„ฑ๋Šฅ์— ์ขŒ์šฐ๋˜์ง€๋งŒ, ์—ฐ๊ฒฐ ๋ฐฉ์‹์ด๋‚˜ ์ „์†ก ๋ฐฉ๋ฒ• ๋“ฑ์—๋„ ์˜ํ–ฅ์„ ๋ฐ›๋Š”๋‹ค.  IEEE 802 ์‹œ๋ฆฌ์ฆˆ๋Š” LAN ํ™˜๊ฒฝ์˜ ๋ฐ์ดํ„ฐ ๋งํฌ ๊ณ„์ธต์— ๋Œ€ํ•œ ํ‘œ์ค€์•ˆ์„ ๋‹ค๋ฃจ๋Š”๋ฐ, ๊ณตํ†ต ๊ธฐ๋Šฅ์ธ LLC ๊ณ„์ธต๋ฟ ์•„๋‹ˆ๋ผ ๋‹ค์–‘ํ•œ MAC ๊ณ„์ธต์— ๋Œ€ํ•œ ํ‘œ์ค€์•ˆ์„ ์ •์˜ํ•˜๊ณ  ์žˆ๋‹ค. MAC(Media Access Control)๊ณผ LLC(Logical Link Control) ๊ณ„์ธตLAN ํ™˜๊ฒฝ์—์„œ๋Š” ๋„คํŠธ์›Œํฌ ์ž์›์„ ํšจ์œจ์ ์œผ๋กœ ํ™œ์šฉํ•˜๋ ค๊ณ  (a)์™€ ๊ฐ™์ด ๋ฐ์ดํ„ฐ ๋งํฌ ๊ณ„์ธต์˜ ๊ธฐ๋Šฅ์„ LLC ๊ณ„์ธต๊ณผ MAC ๊ณ„์ธต์œผ๋กœ ๋‚˜๋ˆ„์–ด ์ฒ˜..

๋„คํŠธ์›Œํฌ ๊ณ„์ธต : ๋ฐ์ดํ„ฐ ํ‰๋ฉด(data plane) & ์ œ์–ด ํ‰๋ฉด(control plane) ๊ฐœ์š”

์ „์†ก ๊ณ„์ธต์ด๋‚˜ ์‘์šฉ ๊ณ„์ธต๊ณผ๋Š” ๋‹ฌ๋ฆฌ, ๋„คํŠธ์›Œํฌ ๊ณ„์ธต์€ ๊ฐ ํ˜ธ์ŠคํŠธ์™€ ๋„คํŠธ์›Œํฌ์˜ ๋ผ์šฐํ„ฐ๋งˆ๋‹ค ๋„คํŠธ์›Œํฌ ๊ณ„์ธต์˜ ์ผ๋ถ€๊ฐ€ ์กด์žฌํ•œ๋‹ค.(ํ”„๋กœํ† ์ฝœ ์Šคํƒ ์ค‘ ๊ฐ€์žฅ ๋ณต์žกํ•œ ๊ณ„์ธต) ๋„คํŠธ์›Œํฌ ๊ณ„์ธต์€ ์„œ๋กœ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ ํ‰๋ฉด(data plane)๊ณผ ์ œ์–ด ํ‰๋ฉด(control plane) ๋‘ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค. ๋ฐ์ดํ„ฐ ํ‰๋ฉด(data plane) ํŒŒํŠธ ์ฃผ์š” ๋‚ด์šฉ- ๋ผ์šฐํ„ฐ๋ณ„ ์ œ์–ด(per-router)๋ผ๋Š” ๋„คํŠธ์›Œํฌ ๊ณ„์ธต์˜ ๊ธฐ๋Šฅ์€ ํ•œ ๋ผ์šฐํ„ฐ์˜ ์ž…๋ ฅ ๋งํฌ์— ๋„์ฐฉํ•œ ๋ฐ์ดํ„ฐ๊ทธ๋žจ์ด ๋‹ค๋ฅธ ํ•œ ๋ชฉ์  ๋ผ์šฐํ„ฐ์˜ ์ถœ๋ ฅ ๋งํฌ์— ์–ด๋–ป๊ฒŒ ๋„์ฐฉํ•˜๋Š”์ง€๋ฅผ ๊ฒฐ์ •- ์ „ํ†ต์ ์ธ IP ํฌ์›Œ๋”ฉ(๋ฐ์ดํ„ฐ๊ทธ๋žจ์˜ ๋ชฉ์ ์ง€ ์ฃผ์†Œ ๊ธฐ๋ฐ˜), ์ผ๋ฐ˜ํ™”๋œ ํฌ์›Œ๋”ฉ(๋ฐ์ดํ„ฐ๊ทธ๋žจ์˜ ์—ฌ๋Ÿฌ ํ•„๋“œ๊ฐ’ ์‚ฌ์šฉ)- IPv4, IPv6 ํ”„๋กœํ† ์ฝœ๊ณผ ์ฃผ์†Œ ์ฒด๊ณ„ ์ œ์–ด ํ‰๋ฉด(control plane) ํŒŒํŠธ ์ฃผ์š” ๋‚ด..

[Java] ์ •๋ ฌ, ๊ทธ๋ฆฌ๋”” | ๋ฐฑ์ค€ 1083 ์†ŒํŠธ

https://www.acmicpc.net/problem/1083 ์ ‘๊ทผ ๋ฐฉ๋ฒ• : ๊ทธ๋ฆฌ๋””ํ•˜๊ฒŒ ๊ฐ ์œ„์น˜์—์„œ ํ˜„์žฌ ๋ฒ”์œ„ ๋‚ด ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ์•ž์œผ๋กœ ์ด๋™์‹œํ‚จ๋‹ค.- S์˜ ์ œํ•œ ๋•Œ๋ฌธ์—, ๊ฐ€๋Šฅํ•œ ๊ตํ™˜ ํšŸ์ˆ˜(j - i  ๋‘ ์›์†Œ ๊ตํ™˜ ๊ณผ์ • :ํ˜„์žฌ ์œ„์น˜ i ์—์„œ i+1๋ถ€ํ„ฐ i+S๋ฒ”์œ„ ๋‚ด์—์„œ ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ์ฐพ๋Š”๋‹ค.ํ•ด๋‹น ๊ฐ’์„ i๋กœ ์ด๋™์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์ธ์ ‘ ์›์†Œ ๊ฐ„ ๊ตํ™˜์„ ๋ฐ˜๋ณตํ•œ๋‹ค. (๋ฒ„๋ธ” ์†ŒํŠธ์™€ ์œ ์‚ฌ)๊ฐ’์„ ์ด๋™ ์‹œํ‚ค๋Š” ๋ฐ ์‚ฌ์šฉํ•œ ๊ตํ™˜ ํšŸ์ˆ˜๋งŒํผ S๋ฅผ ๊ฐ์†Œ์‹œํ‚จ๋‹ค.์ข…๋ฃŒ ์กฐ๊ฑด : S๊ฐ€ 0์ด ๋˜๊ฑฐ๋‚˜, ๋ฐฐ์—ด์„ ๋๊นŒ์ง€ ํƒ์ƒ‰ํ–ˆ์„ ๊ฒฝ์šฐ ์ข…๋ฃŒ ํ•ต์‹ฌ ์ฝ”๋“œ S ์ œํ•œ ๋‚ด์—์„œ ๊ฐ€์žฅ ์™ผ์ชฝ ์ž๋ฆฌ๋ถ€ํ„ฐ ์ตœ๋Œ€ ๊ฐ’์œผ๋กœ ์ฑ„์›Œ์ฃผ๋Š” ๊ฒƒ์— ์ง‘์ค‘ํ•œ๋‹ค.๋งค ๋ฐ˜๋ณต ๋งˆ๋‹ค S-=(maxIndex - i); ๋กœ ๊ตํ™˜ํ•œ ํšŸ์ˆ˜๋งŒํผ S๋ฅผ ๊ฐ์†Œ์‹œ์ผœ์ค€๋‹ค.private static void s..

๋ฐ์ดํ„ฐ ์ „์†ก - ์˜ค๋ฅ˜ ๊ฒ€์ถœ ๊ธฐ๋ฒ•

ํ”„๋ ˆ์ž„ ์ „์†ก ๊ณผ์ •์˜ ์˜ค๋ฅ˜๋ฅผ ๊ทน๋ณตํ•˜๋Š” 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•1) ์ „์†ก ํ”„๋ ˆ์ž„์— ์˜ค๋ฅ˜ ๊ฒ€์ถœ ์ฝ”๋“œ๋ฅผ ๋„ฃ์–ด ํ˜ธ์ŠคํŠธ๊ฐ€ ์ „์†ก ๊ณผ์ •์˜ ์˜ค๋ฅ˜๋ฅผ ๊ฒ€์ถœ์ฃผ๋กœ ์žฌ์ „์†ก์œผ๋กœ ์ด๋ฃจ์–ด์ง. ex) ํŒจ๋ฆฌํ‹ฐ ๋น„ํŠธ, ๋‹คํ•ญ ์ฝ”๋“œ ๋ฐฉ์‹๋„คํŠธ์›Œํฌ์—์„œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์žฌ์ „์†ก ๋ฐฉ์‹์„ ์ด์šฉํ•ด ์˜ค๋ฅ˜๋ฅผ ๋ณต๊ตฌํ•˜๋Š” ์—ญ๋ฐฉํ–ฅ ์˜ค๋ฅ˜ ๋ณต๊ตฌ(BEC, Backward Error Correction), ARQ(Automatic Repeat reQuest)๋ฐฉ์‹์„ ์ด์šฉํ•œ๋‹ค. 2) ์ „์†ก ํ”„๋ ˆ์ž„์— ์˜ค๋ฅ˜ ๋ณต๊ตฌ ์ฝ”๋“œ๋ฅผ ๋„ฃ์–ด ์ˆ˜์‹  ํ˜ธ์ŠคํŠธ๊ฐ€ ์˜ค๋ฅ˜ ๊ฒ€์ถœ๊ณผ ๋ณต๊ตฌ ๊ธฐ๋Šฅ์„ ๋ชจ๋‘ ์ˆ˜ํ–‰์˜ค๋ฅ˜ ๋ณต๊ตฌ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ์ˆ˜์‹  ํ˜ธ์ŠคํŠธ๊ฐ€ ์˜ค๋ฅ˜ ๋ณต๊ตฌ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ์‹์„ ์ˆœ๋ฐฉํ–ฅ ์˜ค๋ฅ˜ ๋ณต๊ตฌ(FEC, Forward Error Correction)๋ผ ํ•จex) ํ•ด๋ฐ ์ฝ”๋“œ(Hamming Code)์—๋Š” 1 ๋น„ํŠธ ์˜ค๋ฅ˜๋ฅผ ๊ฒ€์ถœํ•˜๊ณ  ๋ณต๊ตฌํ•˜..

๋ฐ์ดํ„ฐ ์ „์†ก - ํ”„๋ ˆ์ž„ ๊ตฌ์กฐ (ํ”„๋ ˆ์ž„ & ์Šคํ„ฐํ•‘, stuffing)

๋ฐ์ดํ„ฐ ๋งํฌ ๊ณ„์ธต์—์„œ๋Š” ์ „์†ก ๋ฐ์ดํ„ฐ๋ฅผ ํ”„๋ ˆ์ž„์ด๋ผ๋Š” ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„์–ด ์ฒ˜๋ฆฌํ•œ๋‹ค. ์ „์†ก ํ”„๋ ˆ์ž„์—๋Š” ๋ฐ์ดํ„ฐ ํ”„๋ ˆ์ž„, ๊ธ์ • ์‘๋‹ต ํ”„๋ ˆ์ž„, ๋ถ€์ • ์‘๋‹ต ํ”„๋ ˆ์ž„์˜ ๊ตฌ๋ถ„, ์ˆœ์„œ ๋ฒˆํ˜ธ, ์†ก์ˆ˜์‹  ๊ณผ์ •์—์„œ ์ „์†ก ๋ฐ์ดํ„ฐ์˜ ์˜ค๋ฅ˜๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ์ฒดํฌ์„ฌ, ์†ก์ˆ˜์‹  ํ˜ธ์ŠคํŠธ์˜ ์ฃผ์†Œ, ๊ธฐํƒ€ ํ”„๋กœํ† ์ฝœ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ œ์–ด ์ฝ”๋“œ ๋“ฑ์˜ ์ •๋ณด๊ฐ€ ํฌํ•จ๋œ๋‹ค.ํ”„๋ ˆ์ž„์„ ์ „์†ก๋ฐ›์„ ์ˆ˜์‹  ํ˜ธ์ŠคํŠธ๋Š” ์ œ์ผ ๋จผ์ € ์ฒดํฌ์„ฌ์„ ํ™•์ธํ•ด ์ „์†ก ์ค‘์— ํ”„๋ ˆ์ž„ ๋ณ€ํ˜• ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค. ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋‹ค๋ฉด ๋ถ€์ • ์‘๋‹ต ํ”„๋ ˆ์ž„์„ ํšŒ์‹ ํ•˜์—ฌ ์†ก์‹ ํ˜ธ์ŠคํŠธ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์žฌ์ „์†กํ•˜๋„๋ก ์š”๊ตฌํ•ด ๋ณต๊ตฌ๊ณผ์ •์„ ์‹œ์ž‘ํ•˜๊ฒŒ ํ•œ๋‹ค.ํ”„๋ ˆ์ž„ ๋‚ด์šฉ์— ํฌํ•จ๋˜๋Š” ์ •๋ณด๋Š” ํ”„๋กœํ† ์ฝœ ์šฉ๋„์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ํ”„๋ ˆ์ž„์€ ๋‚ด๋ถ€ ์ •๋ณด๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ์‹์— ๋”ฐ๋ผ ๋ฌธ์ž ํ”„๋ ˆ์ž„๊ณผ ๋น„ํŠธ ํ”„๋ ˆ์ž„์œผ๋กœ ๊ตฌ๋ถ„๋œ๋‹ค. ๋ฌธ์ž ํ”„๋ ˆ์ž„์€ ASCI..

๋ฐ์ดํ„ฐ ์ „์†ก - ์˜ค๋ฅ˜์ œ์–ด

๋ฐ์ดํ„ฐ ๋งํฌ ๊ณ„์ธต ํ”„๋กœํ† ์ฝœ์ด ๋ฌผ๋ฆฌ ๊ณ„์ธต์˜ ์ „์†ก ์˜ค๋ฅ˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์—ฌ๋ถ€๋ฅผ ์ธ์ง€ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.์˜ค๋ฅ˜์˜ ์ข…๋ฅ˜ : ํ”„๋ ˆ์ž„ ๋ณ€ํ˜•, ํ”„๋ ˆ์ž„ ๋ถ„์‹ค์˜ค๋ฅ˜ ๋ณต๊ตฌ : ์ผ๋ฐ˜์ ์œผ๋กœ ์žฌ์ „์†ก์ „์†ก ์˜ค๋ฅ˜ ๋ฌธ์ œ๋Š” ๋‹ค๋ฅธ ๊ณ„์ธต์—์„œ๋„ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•˜์œ„ ๊ณ„์ธต์˜ ์ „์†ก ์˜ค๋ฅ˜๋Š” ์ƒ์œ„ ๊ณ„์ธต์—์„œ ๋ณต๊ตฌํ•ด์•ผ ํ•œ๋‹ค. ์ „์†ก ์˜ค๋ฅ˜์˜ ์œ ํ˜•์˜ค๋ฅ˜ ๋ณต๊ตฌ๋ฅผ ์œ„ํ•œ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ1. ์ˆ˜์‹  ํ˜ธ์ŠคํŠธ์˜ ์‘๋‹ต ํ”„๋ ˆ์ž„์ „์†กํ•œ ๋ฐ์ดํ„ฐ ํ”„๋ ˆ์ž„์˜ ์ผ๋ถ€๊ฐ€ ๊นจ์ง€๋Š” ํ”„๋ ˆ์ž„ ๋ณ€ํ˜• ์˜ค๋ฅ˜๋ฅผ ์ˆ˜์‹  ํ˜ธ์ŠคํŠธ ์ธก์—์„œ ํ™•์ธํ•˜๋ฉด, ์†ก์‹  ํ˜ธ์ŠคํŠธ์— ์‘๋‹ต ํ”„๋ ˆ์ž„์„ ์ „์†กํ•ด ์›๋ž˜์˜ ๋ฐ์ดํ„ฐ ํ”„๋ ˆ์ž„์„ ์žฌ์ „์†กํ•˜๋„๋ก ์š”๊ตฌํ•œ๋‹ค.๋ฐ์ดํ„ฐ ํ”„๋ ˆ์ž„์ด ์ •์ƒ์ ์œผ๋กœ ๋„์ฐฉํ–ˆ์„ ๋•Œ๋Š” ๊ธ์ • ์‘๋‹ต ํ”„๋ ˆ์ž„์„ ํšŒ์‹ , ๋ฐ์ดํ„ฐ ํ”„๋ ˆ์ž„์ด ๊นจ์กŒ์„ ๋•Œ๋Š” ๋ถ€์ • ์‘๋‹ต ํ”„๋ ˆ์ž„์„ ํšŒ์‹ ํ•œ๋‹ค.์†ก์‹  ํ˜ธ์ŠคํŠธ์˜ ์žฌ์ „์†ก ๊ธฐ๋Šฅ์€ ์ˆ˜์‹  ํ˜ธ์ŠคํŠธ์˜ ๋ถ€์ • ์‘..

๋ฐ์ดํ„ฐ ์ „์†ก - ๋ฐ์ดํ„ฐ ์ „์†ก ๋ฐฉ์‹ (์ ๋Œ€์ , ๋ธŒ๋กœ๋“œ์บ์ŠคํŒ…, ๋ฉ€ํ‹ฐํฌ์ธํŠธ ํ†ต์‹ )

์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํฌ์˜ ํšจ๊ณผ : ์ •๋ณด ๊ณต์œ , ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ์— ์˜ํ•œ ์„ฑ๋Šฅ ํ–ฅ์ƒ, ์ค‘๋ณต ์ €์žฅ์— ๋”ฐ๋ฅธ ์‹ ๋ขฐ์„ฑ ํ–ฅ์ƒ ์ •๋ณด ๊ณต์œ (Information Sharing)์ปดํ“จํ„ฐ ํ•˜๋“œ์›จ์–ด๋ฟ ์•„๋‹ˆ๋ผ ๊ฐ ํ˜ธ์ŠคํŠธ์—์„œ ์ œ๊ณตํ•˜๋Š” ๋…ผ๋ฆฌ์ ์ธ ์ •๋ณด๋ฅผ ๊ณต์œ .์ธํ„ฐ๋„ท ์ž์›์„ ๋” ํšจ์œจ์ ์œผ๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€ ๋„คํŠธ์›Œํฌ๋ฅผ ๋ฐœ์ „์‹œํ‚จ 1์ฐจ ์š”์ธ ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ์— ์˜ํ•œ ์„ฑ๋Šฅ ํ–ฅ์ƒ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ ๋‚ด๋ถ€์˜ ํ•˜๋‚˜์˜ ๊ณต์œ  ์‹œ์Šคํ…œ ๋ฒ„์Šค์— ๋‹ค์ˆ˜์˜ ๋ฉ”์ธ ํ”„๋กœ์„ธ์„œ๋ฅผ ์žฅ์ฐฉI/O ์žฅ์น˜์˜ ์ฒ˜๋ฆฌ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด I/O ์ „์šฉ ํ”„๋กœ์„ธ์„œ๋ฅผ ์„ค์น˜์‹œ์Šคํ…œ์ด ์ˆ˜ํ–‰ํ•  ์ž‘์—…์„ ๋ถ„ํ• ํ•ด ๋™์‹œ์— ์ฒ˜๋ฆฌํ•จ์œผ๋กœ์จ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์„ ๋‹จ์ถ• ์ค‘๋ณต ์ €์žฅ์— ๋”ฐ๋ฅธ ์‹ ๋ขฐ์„ฑ ํ–ฅ์ƒ์ค‘์š”ํ•œ ์ •๋ณด๋ฅผ ์—ฌ๋Ÿฌ ์‹œ์Šคํ…œ์— ์ค‘๋ณต ์ €์žฅํ•˜์—ฌ ์ •๋ณด์˜ ์ ‘๊ทผ์„ฑ๊ณผ ์‹ ๋ขฐ์„ฑ์„ ํ–ฅ์ƒ์ค‘๋ณต์— ๋”ฐ๋ฅธ ์ผ๊ด€์„ฑ ๋ฌธ์ œ๋Š” ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์ด ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌ์‹ ๋ขฐ์„ฑ์˜ ํ–ฅ์ƒ ์ •๋„๋งŒํผ..

[Java] ๋‹ค์ต์ŠคํŠธ๋ผ, BFS | ๋ฐฑ์ค€ 2665 ๋ฏธ๋กœ๋งŒ๋“ค๊ธฐ

https://www.acmicpc.net/problem/2665  ์ ‘๊ทผ ๋ฐฉ๋ฒ•  ์ด ๋ฌธ์ œ๋Š” ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ™œ์šฉํ•˜์—ฌ ํ’€ ์ˆ˜ ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ๊ฐ ๋ฐฉ์„ ๋…ธ๋“œ๋กœ ๋ณด๊ณ , ๊ฒ€์€ ๋ฐฉ์—์„œ ํฐ ๋ฐฉ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ์ž‘์—…์„ ๊ฐ€์ค‘์น˜๋กœ ๊ฐ„์ฃผํ•ด ์ตœ์†Œ ๋ณ€๊ฒฝ ํšŸ์ˆ˜ ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•œ๋‹ค. ์ตœ๋‹จ ๊ฒฝ๋กœ๊ฐ€ ์•„๋‹Œ '์ตœ์†Œ ๋ณ€๊ฒฝ ํšŸ์ˆ˜'๋ฅผ ์ฐพ๋Š”๋‹ค๋Š” ์ ์ด ์ผ๋ฐ˜์ ์ธ ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ์˜ ์ฐจ์ด๋‹ค. ์‹œ์ž‘๋ถ€ํ„ฐ ๋๋ฐฉ๊นŒ์ง€ ๊ฐ€๋Š” ๋™์•ˆ ๊ฒ€์€ ๋ฐฉ(0)์„ ์ตœ์†Œ๋กœ ์ง€๋‚˜์•ผ ํ•œ๋‹ค.์ฆ‰ ํฐ ๋ฐฉ(1)์„ ์ง€๋‚˜๊ฐˆ ๋•Œ๋Š” ๋น„์šฉ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ณ  ๊ฒ€์€ ๋ฐฉ(0)์„ ๊ฑฐ์น  ๋•Œ๋Š” ๋น„์šฉ์ด 1 ๋งŒํผ ๋ฐœ์ƒํ•œ๋‹ค๊ณ  ๊ฐ„์ฃผํ•˜๊ณ , ์‹œ์ž‘๋ถ€ํ„ฐ ๋๋ฐฉ๊นŒ์ง€ BFS๋ฅผ ์ง„ํ–‰ํ•˜์—ฌ ์ตœ์†Œ ๋น„์šฉ์œผ๋กœ ๋๋ฐฉ์— ๋„์ฐฉํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๊ตฌํ•˜๋ฉด ๋œ๋‹ค. ์šฐ์„ ์ˆœ์œ„ ํ(PriorityQueue)๋ฅผ ์‚ฌ์šฉํ•ด ํ˜„์žฌ ๋ณ€๊ฒฝ ํšŸ์ˆ˜๊ฐ€ ๊ฐ€์žฅ ์ ์€ ๊ฒฝ๋กœ๋ถ€ํ„ฐ ํƒ์ƒ‰ํ•œ๋‹ค..

๊ทธ๋ž˜ํ”„์˜ ํ‘œํ˜„๊ณผ ์ •์˜

ํŠธ๋ฆฌ : ์„ ํ˜•์œผ๋กœ ํ‘œํ˜„ํ•˜๊ธฐ ํž˜๋“  ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ์•ˆ ๊ทธ๋ž˜ํ”„๋Š” ๊ณ„์ธต์ ์ธ ๊ตฌ์กฐ๋ณด๋‹ค ์ข€๋” ์ผ๋ฐ˜์ ์ด๊ณ  ๊ฐ•๋ ฅํ•œ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.ํ˜„์‹ค ์„ธ๊ณ„์˜ ์‚ฌ๋ฌผ์ด๋‚˜ ์ถ”์ƒ์ ์ธ ๊ฐœ๋… ๊ฐ„์˜ ์—ฐ๊ฒฐ ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ex) ์—ฌ๋ ค ๋„์‹œ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๋„๋กœ๋ง, ์‚ฌ๋žŒ๋“ค ๊ฐ„์˜ ์ง€์ธ ๊ด€๊ณ„, ์›น์‚ฌ์ดํŠธ ๊ฐ„์˜ ๋งํฌ ๊ด€๊ณ„ ๋“ฑ์˜ ์—ฐ๊ฒฐ ๊ตฌ์กฐ ํŠธ๋ฆฌ์™€์˜ ์ฐจ์ด => ํŠธ๋ฆฌ๋Š” ๋ถ€๋ชจ-์ž์‹ ๊ด€๊ณ„์— ๋Œ€ํ•œ ์ œ์•ฝ์ด ์กด์žฌํ•˜๋‚˜ ๊ทธ๋ž˜ํ”„๋Š” ๋ถ€๋ชจ-์ž์‹ ๊ด€๊ณ„์™€ ๊ฐ™์€ ์ œ์•ฝ์ด ์—†์Œ ๊ทธ๋ž˜ํ”„์˜ ์ •์˜์–ด๋–ค ์ž๋ฃŒ๋‚˜ ๊ฐœ๋…์„ ํ‘œํ˜„ํ•˜๋Š” ์ •์ (vertex)๋“ค์˜ ์ง‘ํ•ฉ V์™€ ์ด๋“ค์„ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฐ„์„ (edge)๋“ค์˜ ์ง‘ํ•ฉ E๋กœ ๊ตฌ์„ฑ๋œ ์ž๋ฃŒ ๊ตฌ์กฐ์ •์ ๊ณผ ๊ฐ„์„ ์œผ๋กœ ์ •์˜๋˜๋ฉฐ ์ •์ ์˜ ์œ„์น˜, ๊ฐ„์„ ์˜ ์ˆœ์„œ ๋“ฑ์€ ๊ทธ๋ž˜ํ”„์— ์ •์˜์— ํฌํ•จ๋˜์ง€ ์•Š์Œ.  ๊ทธ๋ž˜ํ”„์˜ ์ข…๋ฅ˜ํ‘œํ˜„ํ•˜๊ณ ์ž ํ•˜๋Š” ๋Œ€์ƒ์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ณ€ํ˜•๋œ ํ˜•ํƒœ๊ฐ€ ์กด์žฌ ๊ฐ„์„ ์ด ๊ฐ€์ง„ ..