728x90
[Algorithm/MST] ํ”„๋ฆผ(Prim) ์•Œ๊ณ ๋ฆฌ์ฆ˜
๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป programming/โ—ฝ ์•Œ๊ณ ๋ฆฌ์ฆ˜2022. 3. 7. 17:02[Algorithm/MST] ํ”„๋ฆผ(Prim) ์•Œ๊ณ ๋ฆฌ์ฆ˜

ํ”„๋ฆผ(Prim) ์•Œ๊ณ ๋ฆฌ์ฆ˜1. ๊ทธ๋ž˜ํ”„์—์„œ ์‹œ์ž‘์ ์„ ์ •ํ•œ๋‹ค - (์–ด๋–ค ๋…ธ๋“œ์ด์–ด๋„ ์ƒ๊ด€์—†์Œ)2. ์„ ํƒํ•œ ์ •์ ๊ณผ ์ธ์ ‘ํ•˜๋Š” ์ •์ ๋“ค ์ค‘ ์ตœ์†Œ ๋น„์šฉ์ธ ๊ฐ„์„ ์— ์—ฐ๊ฒฐ๋œ ์ •์ ์„ ์„ ํƒํ•œ๋‹ค.3. ๋ชจ๋“  ์ •์ ์ด ์„ ํƒ๋  ๋•Œ๊นŒ์ง€ 1,2๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.โ€ป ํ”„๋ฆผ์€ ์‹œ์ž‘์ ์„ ์ •ํ•˜๊ณ , ์‹œ์ž‘์ ์—์„œ ๊ฐ€๊นŒ์šด ์ •์ ์„ ์„ ํƒํ•˜๋ฉด์„œ ํŠธ๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š”๋ฐ ๊ทธ ๊ณผ์ •์—์„œ ์‚ฌ์ดํด์„ ์ด๋ฃจ์ง€ ์•Š์ง€๋งŒ ํฌ๋ฃจ์Šค์นผ์€ ์‹œ์ž‘์ ์„ ๋”ฐ๋กœ ์ •ํ•˜์ง€ ์•Š๊ณ  ์ •๋ ฌ ํ›„ ๊ฐ€์žฅ ์ตœ์†Œ ๋น„์šฉ์œผ๋กœ ๊ฐ„์„ ์„ ์„ ํƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์ดํด์ด ๋ฐœ์ƒํ•˜๋Š”์ง€ ํŒ๋‹จํ•˜๋ฉด์„œ ์ง„ํ–‰ํ•ด์•ผ ํ•œ๋‹ค.

[Algorithm/MST] ํฌ๋ฃจ์Šค์นผ(Kruscal) ์•Œ๊ณ ๋ฆฌ์ฆ˜
๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป programming/โ—ฝ ์•Œ๊ณ ๋ฆฌ์ฆ˜2022. 3. 3. 17:56[Algorithm/MST] ํฌ๋ฃจ์Šค์นผ(Kruscal) ์•Œ๊ณ ๋ฆฌ์ฆ˜

ํฌ๋ฃจ์Šค์นผ(Kruscal) ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ตœ์†Œ ๋น„์šฉ ์‹ ์žฅํŠธ๋ฆฌ(Minimum Spanning Tree) ๋Œ€ํ‘œ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ํ•˜๋‚˜๋กœ ๊ทธ๋ž˜ํ”„ ๋‚ด์˜ ๋ชจ๋“  ์ •์ ๋“ค์„ ๊ฐ€์žฅ ์ ์€ ๋น„์šฉ์œผ๋กœ ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. [Algorithm] ์ตœ์†Œ ๋น„์šฉ ์‹ ์žฅ ํŠธ๋ฆฌ (MST, Minimum SpanningTree) (tistory.com) [Algorithm] ์ตœ์†Œ ๋น„์šฉ ์‹ ์žฅ ํŠธ๋ฆฌ (MST, Minimum SpanningTree)์‹ ์žฅํŠธ๋ฆฌ(SpanningTree) ๊ทธ๋ž˜ํ”„ ์ค‘ ๋ชจ๋“  ์ •์ ์ด ๊ฐ„์„ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๊ณ , ๊ฐ„์„ ๋“ค ์‚ฌ์ด์— ์‚ฌ์ดํด์ด ์—†๋Š” ๊ทธ๋ž˜ํ”„๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ํŠน์ง•์œผ๋กœ๋Š” N๊ฐœ์˜ ์ •์ ์„ ๊ฐ€์ง€๋Š” ๊ทธ๋ž˜ํ”„์˜ ์ตœ์†Œ ๊ฐ„์„ (edge)์˜ ์ˆ˜๋Š” (N-1)๊ฐœcclient.tistory.com์ด์ „์— ํฌ์ŠคํŒ…ํ•œ ์ตœ์†Œ ๋น„์šฉ ์‹ ์žฅ ํŠธ๋ฆฌ์˜ ๋‹ค์„ฏ๊นŒ์ง€ ํŠน์ง•..

[Algorithm] ์ตœ์†Œ ๋น„์šฉ ์‹ ์žฅ ํŠธ๋ฆฌ (MST, Minimum SpanningTree)
๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป programming/โ—ฝ ์•Œ๊ณ ๋ฆฌ์ฆ˜2022. 2. 17. 16:40[Algorithm] ์ตœ์†Œ ๋น„์šฉ ์‹ ์žฅ ํŠธ๋ฆฌ (MST, Minimum SpanningTree)

์‹ ์žฅํŠธ๋ฆฌ(SpanningTree)๊ทธ๋ž˜ํ”„ ์ค‘ ๋ชจ๋“  ์ •์ ์ด ๊ฐ„์„ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๊ณ , ๊ฐ„์„ ๋“ค ์‚ฌ์ด์— ์‚ฌ์ดํด์ด ์—†๋Š” ๊ทธ๋ž˜ํ”„๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ํŠน์ง•์œผ๋กœ๋Š” N๊ฐœ์˜ ์ •์ ์„ ๊ฐ€์ง€๋Š” ๊ทธ๋ž˜ํ”„์˜ ์ตœ์†Œ ๊ฐ„์„ (edge)์˜ ์ˆ˜๋Š” (N-1)๊ฐœ์ด๋‹ค. ์ตœ์†Œ ๋น„์šฉ ์‹ ์žฅ ํŠธ๋ฆฌ (MST, Minimum SpanningTree)์‹ ์žฅ ํŠธ๋ฆฌ๋Š” ๊ทธ๋ž˜ํ”„์—์„œ ๋ชจ๋“  ์ •์ ์— ๋Œ€ํ•œ ์ตœ์†Œํ•œ์˜ ์—ฐ๊ฒฐ๋งŒ์„ ๋‚จ๊ธด ๊ทธ๋ž˜ํ”„์ด๋‹ค. ํ•œ ๊ณณ์œผ๋กœ ๋„๋‹ฌํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋‘ ๊ฐœ ์ด์ƒ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ, ์ฆ‰ ์‚ฌ์ดํด์ด ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์ตœ์†Œํ•œ์˜ ์—ฐ๊ฒฐ์ด๋ผ ๋งํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์—, ๋ชจ๋“  ์œ„์น˜ ํ•˜๋‚˜์—์„œ ๋‹ค๋ฅธ ๊ณณ์œผ๋กœ ์ด๋™ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๋‹จ ํ•œ ๊ฐ€์ง€๋กœ ๊ฒฐ์ •๋˜๋„๋ก ํ•ญ์ƒ ํŠธ๋ฆฌ์˜ ํ˜•ํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ตœ์†Œ ๋น„์šฉ ์‹ ์žฅ ํŠธ๋ฆฌ๋Š” ์ด๋Ÿฌํ•œ ์‹ ์žฅ ํŠธ๋ฆฌ๋“ค ์ค‘ ๊ฐ„์„ ์˜ ๊ฐ€์ค‘์น˜ ํ•ฉ์ด ๊ฐ€์žฅ ์ž‘์€ ํŠธ๋ฆฌ์ด๋‹ค. ์ตœ์†Œ ๋น„์šฉ ์‹ ์žฅ ํŠธ๋ฆฌ๋Š” ๊ทธ๋ฆฌ๋”” ..

[Algorithm] Union-Find
๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป programming/โ—ฝ ์•Œ๊ณ ๋ฆฌ์ฆ˜2022. 2. 14. 18:26[Algorithm] Union-Find

Union-Find(์œ ๋‹ˆ์˜จ ํŒŒ์ธ๋“œ)๊ทธ๋ž˜ํ”„ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ํ•˜๋‚˜๋กœ ์„œ๋กœ์†Œ(disjoint sets) ์ง‘ํ•ฉ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ์„œ๋กœ์†Œ ์ง‘ํ•ฉ์ด๋ž€ ๊ณตํ†ต ์›์†Œ๊ฐ€ ์—†๋Š” ๋‘ ์ง‘ํ•ฉ์„ ์˜๋ฏธํ•œ๋‹ค. ์„œ๋กœ์†Œ ์ง‘ํ•ฉ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ๋Š” ํŠธ๋ฆฌ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ง‘ํ•ฉ์„ ํ‘œํ˜„ํ•˜๋Š”๋ฐ, ์„œ๋กœ์†Œ ์ง‘ํ•ฉ ์ •๋ณด(ํ•ฉ์ง‘ํ•ฉ ์—ฐ์‚ฐ)๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ ํŠธ๋ฆฌ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ด์šฉํ•ด์„œ ์ง‘ํ•ฉ์„ ํ‘œํ˜„ํ•˜๋Š” ์„œ๋กœ์†Œ ์ง‘ํ•ฉ ๊ณ„์‚ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.1. union(ํ•ฉ์ง‘ํ•ฉ)์—ฐ์‚ฐ์„ ํ™•์ธํ•˜์—ฌ, ์„œ๋กœ ์—ฐ๊ฒฐ๋œ ๋‘ ๋…ธ๋“œ A, B๋ฅผ ํ™•์ธํ•œ๋‹ค.       - A์™€ B์˜ ๋ฃจํŠธ ๋…ธํŠธ A', B'๋ฅผ ๊ฐ๊ฐ ์ฐพ๋Š”๋‹ค.       - A'๋ฅผ B'์˜ ๋ถ€๋ชจ ๋…ธ๋“œ๋กœ ์„ค์ •ํ•œ๋‹ค.(B'๊ฐ€ A'๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋„๋ก ํ•œ๋‹ค.)2. ๋ชจ๋“  union(ํ•ฉ์ง‘ํ•ฉ) ์—ฐ์‚ฐ์„ ์ฒ˜๋ฆฌํ•  ๋•Œ๊นŒ์ง€ 1๋ฒˆ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.17. Union-Find(..

[C++] std::string_view ํด๋ž˜์Šค
๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป programming/โ—ฝ c, c++2022. 2. 9. 14:53[C++] std::string_view ํด๋ž˜์Šค

C++17์ด์ „์—๋Š” ์ฝ๊ธฐ ์ „์šฉ ์ŠคํŠธ๋ง์„ ๋ฐ›๋Š” ํ•จ์ˆ˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ํƒ€์ž…์„ ์‰ฝ๊ฒŒ ๊ฒฐ์ •ํ•  ์ˆ˜ ์—†์—ˆ๋‹ค. const char*๋กœ ์ง€์ •ํ•˜๋ฉด std::string์„ ์‚ฌ์šฉํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ์—์„œ c_str( )๋‚˜ data( )๋ฅผ ์ด์šฉํ•˜์—ฌ string์„ const char*๋กœ ๋ณ€ํ™˜ํ•ด์„œ ํ˜ธ์ถœํ•ด์•ผ ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด std::string์˜ ๊ฐ์ฒด์ง€ํ–ฅ ์†์„ฑ๊ณผ ์—ฌ๊ธฐ์„œ ์ œ๊ณตํ•˜๋Š” ํ—ฌํผ ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๋Œ€๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” C++17๋ถ€ํ„ฐ ์ถ”๊ฐ€๋œ std::string_view๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. std::string_view - ํ—ค๋”: - ํด๋ž˜์Šค ํ…œํ”Œ๋ฆฟ: std::base_string_view - ์ถ”๊ฐ€ ๋ฉ”์„œ๋“œ: remove_prefix(size_t), remove_suffix(size_t) → ์ง€์ •ํ•œ ์˜คํ”„์…‹๋งŒํผ ์ŠคํŠธ๋ง์˜..

[C++] ์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ ํ”„๋กœํ† ํƒ€์ž… & ํ•œ๊ณ„
๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป programming/โ—ฝ c, c++2022. 2. 8. 00:59[C++] ์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ ํ”„๋กœํ† ํƒ€์ž… & ํ•œ๊ณ„

์ข…๋ฅ˜ ์—ฐ์‚ฐ์ž ํ”„๋กœํ† ํƒ€์ž… ์ดํ•ญ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž operator+ operator- operator* operator/ operator% T operatorโ–  ( const T&, const T& ) ; ๋‹จํ•ญ ์‚ฐ์ˆ  ๋ฐ ๋น„ํŠธ ์—ฐ์‚ฐ์ž operator+ operator- operator~ T operatorโ–  ( ) const ; ์„ ํ–‰, ํ›„ํ–‰ (์ฆ๊ฐ€,๊ฐ์†Œ) operator++ operator-- T& operatorโ–  ( ); T& operatorโ–  ( int ); ๋Œ€์ž… ์—ฐ์‚ฐ์ž operator = T& operatorโ–  ( const T& ); ์ถ•์•ฝ ์‚ฐ์ˆ  ๋Œ€์ž… ์—ฐ์‚ฐ์ž operator+= operator-= operator*= operator/= operator%= T& operatorโ–  ( const T& ); T&..

(์ „๋ฌธ๊ฐ€๋ฅผ ์œ„ํ•œ C++/ ๊ฐœ์ • 4ํŒ) - I/O ์ž…์ถœ๋ ฅ ์™„์ „ ๋ถ„์„
๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป programming/โ—ฝ c, c++2022. 1. 31. 01:13(์ „๋ฌธ๊ฐ€๋ฅผ ์œ„ํ•œ C++/ ๊ฐœ์ • 4ํŒ) - I/O ์ž…์ถœ๋ ฅ ์™„์ „ ๋ถ„์„

C++์—์„œ๋Š” ํ”ํžˆ ์ŠคํŠธ๋ฆผ์˜ ์ถœ๋ฐœ์ง€์™€ ๋ชฉ์ ์ง€๋กœ ์ฝ˜์†”, ํŒŒ์ผ, ์ŠคํŠธ๋ง์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. โ€ป ํŒŒ์ผ ๋์„ ๋‚˜ํƒ€๋‚ด๋Š” EOF(end of file)์€ ์œ ๋‹‰์Šค์™€ ๋ฆฌ๋ˆ…์Šค์—์„œ๋Š” Ctrl+D๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์œˆ๋„์šฐ์—์„œ๋Š” Ctrl+Z๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. 1. ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ฉ”์„œ๋“œ ๋Œ€ํ‘œ์ ์ธ cout์€ ๋นผ๊ณ  ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. cin ์ž…๋ ฅ ์ŠคํŠธ๋ฆผ. '์ž…๋ ฅ ์ฝ˜์†”'์— ๋“ค์–ด์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š”๋‹ค. cout ๋ฒ„ํผ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ. ๋ฐ์ดํ„ฐ๋ฅผ '์ถœ๋ ฅ ์ฝ˜์†”'์— ์“ด๋‹ค. cerr ๋ฒ„ํผ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ. ๋ฐ์ดํŠธ๋ฅผ '์—๋Ÿฌ ์ฝ˜์†”'์— ์Šจ๋‹ค. clog ๋ฒ„ํผ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” cerr โ€ป ๋ฒ„ํผ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์˜ ์ฐจ์ด์™€ ์žฅ์ ์€? ๋ฒ„ํผ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ŠคํŠธ๋ฆผ์€ ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฒ„ํผ์— ์ €์žฅํ–ˆ๋‹ค๊ฐ€ ๋ธ”๋ก ๋‹จ์œ„๋กœ ๋ชฉ์ ์ง€๋กœ ๋ณด๋‚ด๊ณ , ๋ฒ„ํผ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ..

[C++] ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป programming/โ—ฝ c, c++2021. 3. 14. 03:14[C++] ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

ใ€Š์ถœ์ฒ˜. ์‹œ์ž‘ํ•˜์ž! C++17 ํ”„๋กœ๊ทธ๋ž˜๋ฐ (๋ฐ•ํ—Œ์žฌ ์ง€์Œ)ใ€‹ ์‹œ์ž‘ํ•˜๊ธฐ ์ „ ๋™๊ธฐ์™€ ๋น„๋™๊ธฐ์— ๋Œ€ํ•ด์„œ ๋จผ์ € ์•Œ์•„๋ณด์ž! Asynchronous(๋น„๋™๊ธฐ) Synchronous(๋™๊ธฐ) ๋ฐœ์Œ๋„ ์–ด๋ ค์›Œ ๋ณด์ด๋Š” ๋™๊ธฐ, ๋น„๋™๊ธฐ ์ผ๋‹จ ๋ง์€ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋‹ˆ.. ๋ฒˆ์—ญ๊ธฐ์— ๋Œ๋ ค ์ฝ์–ด์ฃผ๋Š”๋ฐ๋กœ ํ•œ ๋ฒˆ ์ ์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Synchronous-> siNGkrษ™nษ™s(์”จ-์ธ!ํฌ๋กœ๋„ˆ์Šค) Asynchronous->ฤหˆsiNGkrษ™nษ™s(์—์ด ์”จ-์ธ!ํฌ๋กœ๋„ˆ์Šค) ์ด๋Ÿฐ์‹์œผ๋กœ ๋ฐœ์Œํ•ด์ฃผ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์•Œ์•„ ๋‘ก์‹œ๋‹ค.. ๋ฉด์ ‘์—์„œ ๋ฌผ์–ด๋ณด๋ฉด ์•Œ์•„๋“ฃ๊ธด ํ•ด์•ผํ•˜๋‹ˆ๊น (T_T)/ ์ด์ œ ์ด ๋‘˜์˜ ์ฐจ์ด์ ๊ณผ ์ง€๋‹Œ ๋œป์„ ์•Œ์•„๋ณด์ž! ๋”๋ณด๊ธฐ ๋”๋ณด๊ธฐ ๋”๋ณด๊ธฐ โ— Asynchronous(๋น„๋™๊ธฐ) : ์ž‘์—…์„ ์œ„์ž„ํ•˜๊ณ  ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋ฐฉ์‹ ์‰ฝ๊ฒŒ ์ด์•ผ๊ธฐ ํ•˜๋ฉด, ๊ผญ ํ•œ ์ค„ ํ•œ ์ค„ ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰๋˜..

(c++) ์กฐ๊ฑด ๋ณ€์ˆ˜(Conditional Variable)
๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป programming/โ—ฝ c, c++2021. 3. 13. 20:16(c++) ์กฐ๊ฑด ๋ณ€์ˆ˜(Conditional Variable)

ใ€Š์ถœ์ฒ˜. ์‹œ์ž‘ํ•˜์ž! C++17 ํ”„๋กœ๊ทธ๋ž˜๋ฐ (๋ฐ•ํ—Œ์žฌ ์ง€์Œ)ใ€‹ ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ์Šค๋ ˆ๋“œ๋ผ ํ•˜๋”๋ผ๋„ ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์— ์ „๋‹ฌํ•  ์ •๋ณด๊ฐ€ ์žˆ๊ธฐ ๋งˆ๋ จ์ด๋‹ค. ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ• ์ค‘ ์šฐ๋ฆฌ๊ฐ€ ๊ณต๋ถ€ํ•  ๋ฐฉ๋ฒ•์€ '์กฐ๊ฑด๋ณ€์ˆ˜(Conditional Variable)' ๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๊ธฐ๋Šฅ์ด๋‹ค. ์กฐ๊ฑด๋ณ€์ˆ˜๋Š” ์ฃผ๋กœ ๊ฒŒ์ž„์—์„œ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ๋‹ฌ๋ฆฌ๊ธฐ ์‹œํ•ฉ์ฒ˜๋Ÿผ ๋ชจ๋“  ์„ ์ˆ˜๊ฐ€ ์ถœ๋ฐœ์„ ์ƒ์— ๋Œ€๊ธฐํ•œ ์ƒํƒœ์—์„œ ์ด์†Œ๋ฆฌ์™€ ํ•จ๊ป˜ ์ถœ๋ฐœํ•˜๋„๋ก ์Šค๋ ˆ๋“œ ๋ชจ๋‘ ๋Œ€๊ธฐ ์ƒํƒœ๋กœ ๋งŒ๋“ค๊ณ  ๋™์‹œ์— ๊ณต๋™ ๊ฒฝ์Ÿ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์กฐ๊ฑด๋ณ€์ˆ˜๋Š” ๋‹จ์ง€ ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ์‹ ํ˜ธ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ๊ธฐ๋Šฅ๋งŒ์„ ์ œ๊ณตํ•  ๋ฟ ์ž์ฒด ์ž ๊ธˆ ๊ธฐ๋Šฅ์ด ์—†๋‹ค. ๋”ฐ๋ผ์„œ ๋‹ค์ˆ˜์˜ ์Šค๋ ˆ๋“œ์— ์˜ํ•ด ์‹คํ–‰๋˜๋Š” ์ž‘์—…์ด ์•ˆ์ „์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ๋ณ„๋„ ๋ฎคํ…์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๊ฐ€์žฅ ์ค‘์š”ํ•œ ํ•จ์ˆ˜๋Š” wait(), notify_all() ํ•จ์ˆ˜์ด๋‹ค. ์กฐ๊ฑด๋ณ€..

728x90
image