Just keep coding ...

[์ž๋ฃŒ๊ตฌ์กฐ] ๊ทธ๋ž˜ํ”„(Graph)์˜ ํ‘œํ˜„

2024. 10. 27. 13:18ใ†์ž๋ฃŒ๊ตฌ์กฐ

728x90

๐Ÿ‘‰  ๊ทธ๋ž˜ํ”„

  • ๊ทธ๋ž˜ํ”„๋ž€ ์‚ฌ๋ฌผ์„ ์ •์ (vertex)๊ณผ ๊ฐ„์„ (edge)์œผ๋กœ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•œ ๋„๊ตฌ
  • ๊ทธ๋ž˜ํ”„๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ ๊ฐ€๋Šฅ
    • ์ธ์ ‘ ํ–‰๋ ฌ(adjacency matrix): 2์ฐจ์› ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹
    • ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ(adjacency list): ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ์‹

๐Ÿ‘‰  ์ธ์ ‘ ํ–‰๋ ฌ(Adjacency Matrix)

  • ์ธ์ ‘ ํ–‰๋ ฌ์—์„œ๋Š” ๊ทธ๋ž˜ํ”„๋ฅผ 2์ฐจ์› ๋ฐฐ์—ด๋กœ ํ‘œํ˜„

  • ๋ฌด๋ฐฉํ–ฅ ๋ฌด๊ฐ€์ค‘์น˜ ๊ทธ๋ž˜ํ”„ (์ž๊ธฐ์ž์‹ ๊ณผ ๊ฐ„์„ ์ด ์—ฐ๊ฒฐ๋˜์–ด์žˆ์ง€ ์•Š์„ ๋•Œ 0์œผ๋กœ ํ‘œ๊ธฐ)
    • ๋ชจ๋“ ๊ฐ„์„ ์ด ๋ฐฉํ–ฅ์„ฑ์„ ๊ฐ€์ง€์ง€ ์•Š๋Š” ๊ทธ๋ž˜ํ”„๋ฅผ ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„๋ผ๊ณ  ํ•œ๋‹ค. 
    • ๋ฌด๋ฐฉํ–ฅ ๋น„๊ฐ€์ค‘์น˜ ๊ทธ๋ž˜ํ”„๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ์ƒํ™ฉ์„ ์ธ์ ‘ํ–‰๋ ฌ๋กœ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๊ฐ„์„ ์˜ ๊ฐ€์ค‘์น˜๊ฐ€ ์ ํ˜€์žˆ์ง€ ์•Š์Œ

  • ๋ฐฉํ–ฅ ๊ฐ€์ค‘์น˜ ๊ทธ๋ž˜ํ”„
    • ๋ชจ๋“  ๊ฐ„์„ ์ด ๋ฐฉํ–ฅ์„ ๊ฐ€์ง€๋Š” ๊ทธ๋ž˜ํ”„๋ฅผ ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„๋ผ๊ณ  ํ•œ๋‹ค.
    • ๋ชจ๋“  ๊ฐ„์„ ์— ๊ฐ€์ค‘์น˜๊ฐ€ ์žˆ๋Š” ๊ทธ๋ž˜ํ”„๋ฅผ ๊ฐ€์ค‘์น˜ ๊ทธ๋ž˜ํ”„๋ผ๊ณ  ํ•œ๋‹ค.
    • ๋ฐฉํ–ฅ ๊ฐ€์ค‘์น˜ ๊ทธ๋ž˜ํ”„๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ ์—ฐ๊ฒฐ๋˜์–ด์žˆ๋Š” ์ƒํ™ฉ์„ ์ธ์ ‘ํ–‰๋ ฌ๋กœ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ‘‰  ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ(Adjacency List)

  • ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ๋Š” ๊ทธ๋ž˜ํ”„๋ฅผ ๋ฆฌ์ŠคํŠธ๋กœ ํ‘œํ˜„ํ•œ๋‹ค.

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

  • ๋ฐฉํ–ฅ ๊ฐ€์ค‘์น˜ ๊ทธ๋ž˜ํ”„
    • ๋ชจ๋“  ๊ฐ„์„ ์ด ๋ฐฉํ–ฅ์„ฑ์„ ๊ฐ€์ง€๋Š” ๊ทธ๋ž˜ํ”„๋ฅผ ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„๋ผ๊ณ  ํ•œ๋‹ค.
    • ๋ชจ๋“ ๊ฐ„์„ ์— ๊ฐ€์ค‘์น˜๊ฐ€ ์žˆ๋Š” ๊ทธ๋ž˜ํ”„๋ฅผ ๊ฐ€์ค‘์น˜ ๊ทธ๋ž˜ํ”„๋ผ๊ณ  ํ•œ๋‹ค.
    • ๋ฐฉํ–ฅ ๊ฐ€์ค‘์น˜ ๊ทธ๋ž˜ํ”„๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ์ƒํ™ฉ์„ ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ๋กœ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ‘‰ ๊ทธ๋ž˜ํ”„์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„

  • ์ธ์ ‘ ํ–‰๋ ฌ: ๋ชจ๋“  ์ •์ ๋“ค์˜ ์—ฐ๊ฒฐ ์—ฌ๋ถ€๋ฅผ ์ €์žฅํ•ด O(V²)์˜ ๊ณต๊ฐ„์„ ์š”๊ตฌํ•œ๋‹ค.
    • ๊ณต๊ฐ„ ํšจ์œจ์„ฑ์ด ๋–จ์–ด์ง€์ง€๋งŒ, ๋‘ ๋…ธ๋“œ์˜ ์—ฐ๊ฒฐ ์—ฌ๋ถ€๋ฅผ O(1)์— ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ: ์—ฐ๊ฒฐ๋œ ๊ฐ„์„ ์˜ ์ •๋ณด๋งŒ์„ ์ €์žฅํ•˜์—ฌ O(V + E)์˜ ๊ณต๊ฐ„์„ ์š”๊ตฌํ•œ๋‹ค.
    • ๊ณต๊ฐ„ ํšจ์œจ์„ฑ์ด ์šฐ์ˆ˜ํ•˜์ง€๋งŒ, ๋‘ ๋…ธ๋“œ์˜ ์—ฐ๊ฒฐ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด O(V)์˜ ์‹œ๊ฐ„์ด ํ•„์š”ํ•˜๋‹ค.
  ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์—ฐ๊ฒฐ ์—ฌ๋ถ€ ํ™•์ธ
์ธ์ ‘ ํ–‰๋ ฌ O(V²) O(1)
์ธ์ ‘ ๋ฆฌ์ŠคํŠธ O(V + E) O(V)

 

 

๐Ÿ‘‰ ์ตœ๋‹จ ๊ฒฝ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ตฌํ˜„ํ•  ๋•Œ, ์–ด๋–ค ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ์œ ์šฉํ• ๊นŒ?

  • ๊ฐ๊ฐ ๊ทผ์ฒ˜์˜ ๋…ธ๋“œ์™€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์œผ๋ฏ€๋กœ, ๊ฐ„์„  ๊ฐœ์ˆ˜๊ฐ€ ์ ์–ด ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ๊ฐ€ ์œ ๋ฆฌ

 

 

 

์ถœ์ฒ˜: https://fastcampus.co.kr/dev_online_upjscodingtest

 

JavaScript ์ฝ”๋”ฉํ…Œ์ŠคํŠธ 131๊ฐœ ์˜ˆ์ œ & CS์ง€์‹์œผ๋กœ ๋๋‚ด๊ธฐ | ํŒจ์ŠคํŠธ์บ ํผ์Šค

25์‹œ๊ฐ„ ๋Œ€๋น„ ๊ณผ์ • / '์ฝ”ํ…Œ ๋ ˆ์ „๋“œ' ์œ ํŠœ๋ฒ„ ๊ฐ•์‚ฌ๋‹˜๊ป˜ ํ•ต์‹ฌ๋งŒ ๋ฐฐ์šฐ๊ณ  ๋น ๋ฅด๊ฒŒ ํ•ฉ๊ฒฉํ•˜์„ธ์š”.

fastcampus.co.kr

 

728x90