[c++] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ๋…๊ณต๋ถ€ :: ์ž๋ฃŒ๊ตฌ์กฐ - ๊ทธ๋ž˜ํ”„
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/Algorithm 2020. 7. 28. 14:17

๊ทธ๋ž˜ํ”„ ์šฉ๋„ ์šฉ์–ด ์ •๋ฆฌ ๊ธฐ๋ณธ ์‹ฌํ™” ๊ตฌํ˜„ ์ธ์ ‘ ํ–‰๋ ฌ ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ ๋น„๊ต ์—ฐ์‚ฐ ๋ถ„๋ฅ˜ ๋ฐฉํ–ฅ์„ฑ์— ๋”ฐ๋ฅธ ๋ถ„๋ฅ˜ ์—ฐ๊ฒฐ์— ๋”ฐ๋ฅธ ๋ถ„๋ฅ˜ ์‚ฌ์ดํด์— ๋”ฐ๋ฅธ ๋ถ„๋ฅ˜ ํŠน์ˆ˜ํ•œ ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰ ๋„์ถœ๋œ ๋ฌธ์ œ๋“ค ๊ด€๋ จ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ฐธ๊ณ  ๊ทธ๋ž˜ํ”„ ๊ทธ๋ž˜ํ”„๋ž€ '๋…ธ๋“œ'์™€ ๋…ธ๋“œ๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” '๊ฐ„์„ '์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ์ง€๊ธˆ๊นŒ์ง€์˜ ์‚ดํŽด๋ณธ ์ž๋ฃŒ๊ตฌ์กฐ๋“ค(๋ฆฌ์ŠคํŠธ, ์Šคํƒ, ํ ๋“ฑ)๊ณผ๋Š” ๋‹ฌ๋ฆฌ ๊ทธ๋ž˜ํ”„๋Š” ๋น„์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ ์ด๋‹ค. ์šฉ๋„ ๊ทธ๋ž˜ํ”„๋Š” ์ผ์ƒ์ƒํ™œ์—์„œ ์—ฐ๊ฒฐ๋˜์–ด์žˆ๋Š” ๊ฐ์ฒด ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค. ์˜ˆ๋กœ ์ง€๋„๋‚˜ ์ง€ํ•˜์ฒ  ๋…ธ์„ ๋„, ์ „๊ธฐํšŒ๋กœ, ๋„๋กœ ๋“ฑ์„ ๋“ค ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ ์ปดํ“จํ„ฐ ์„ธ๋ถ€์ „๊ณต์—์„œ๋Š” ํ†ต์‹  ๋„คํŠธ์›Œํฌ ๋ถ„์•ผ์—์„œ๋„ ์“ฐ์ด๋ฉฐ, ๋…ผ๋ฆฌํšŒ๋กœ๋ฅผ ์„ค๊ณ„ํ•˜๊ณ  ๋ถ„์„ํ•˜๋Š” ๋ฐ์—๋„ ์‚ฌ์šฉ๋œ๋‹ค. ์ตœ๊ทผ์—๋Š” ์›น์‚ฌ์ดํŠธ์˜ ๋งํฌ ์—ฐ๊ฒฐ(Page Rank)์ด๋‚˜ SNS ์ƒ์˜ ์นœ๊ตฌ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐ์—๋„ ์‚ฌ์šฉ๋˜..

[c++] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ๋…๊ณต๋ถ€ :: ์ž๋ฃŒ๊ตฌ์กฐ - ์„œ๋ก 
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/Algorithm 2020. 7. 28. 14:14

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

[c++] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ๋…๊ณต๋ถ€ :: ์ž๋ฃŒ๊ตฌ์กฐ - ์Šคํƒ, ํ, ๋ฑ
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/Algorithm 2020. 7. 19. 11:39

์Šคํƒ ํŠน์ง• ์šฉ๋„ ์—ฐ์‚ฐ ์‚ฝ์ž… ์‚ญ์ œ ์ ‘๊ทผ ๊ตฌํ˜„ ํ ์šฉ๋„ ์ข…๋ฅ˜ ์—ฐ์‚ฐ ์‚ฝ์ž… ์‚ญ์ œ ์ ‘๊ทผ ๊ตฌํ˜„ ์šฐ์„ ์ˆœ์œ„ ํ ๋ฑ ์šฉ๋„ ๊ตฌํ˜„ ์Šคํƒ ์Šคํƒ์€ LIFO(Last-In First-Out), ์ฆ‰ ํ›„์ž…์„ ์ถœ์˜ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•ํƒœ์ด๋ฉฐ, ์ ‘์‹œ์ฒ˜๋Ÿผ ์Œ“์—ฌ์„œ ์ดํ›„์— ์‚ฝ์ž…๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋จผ์ € ๋น ์ ธ๋‚˜๊ฐ€๋„๋ก ๋˜์–ด์žˆ๋‹ค. top ๋ณ€์ˆ˜๋Š” ๊ฐ€์žฅ ์ตœ๊ทผ์— ๋“ค์–ด์˜จ ์š”์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋ฉฐ ์Šคํƒ์ด ๋น„์–ด์žˆ์œผ๋ฉด -1์ด๋‹ค. ํŠน์ง• LIFO ๋‚ด๋ถ€ ์š”์†Œ๋ฅผ ํ™•์ธํ•  ๋ฐฉ๋ฒ•์ด pop ๋ง๊ณ ๋Š” ์—†๋‹ค. ์šฉ๋„ ์ž…๋ ฅ์˜ ์—ญ์ˆœ์ด ํ•„์š”ํ•  ๋•Œ ์Šคํƒ์„ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๋ฉฐ, ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ์—์„œ ๋ณต๊ท€ ์ฃผ์†Œ๋ฅผ ๊ธฐ์–ตํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‹œ์Šคํ…œ ์Šคํƒ์ด ์‚ฌ์šฉ๋˜๊ธฐ๋„ ํ•œ๋‹ค. ๋˜ํ•œ ๊ด„ํ˜ธ ๊ฒ€์‚ฌ, ๊ณ„์‚ฐ๊ธฐ, ๋ฏธ๋กœ ํƒ์ƒ‰ ๋“ฑ์˜ ๊ฒฝ์šฐ์— ์Šคํƒ์ด ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋œ๋‹ค. ๊ณ„์‚ฐ๊ธฐ์—์„œ ์ค‘์œ„ ํ‘œ๊ธฐ์‹(infix)์„ ํ›„์œ„ ํ‘œ๊ธฐ์‹(postfix)์œผ๋กœ..

[c++] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ๋…๊ณต๋ถ€ :: ์ž๋ฃŒ๊ตฌ์กฐ - ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/Algorithm 2020. 7. 19. 11:09

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

[c++] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ๋…๊ณต๋ถ€ :: ์ž๋ฃŒ๊ตฌ์กฐ - ๋ฐฐ์—ด, ๋ฌธ์ž์—ด
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/Algorithm 2020. 7. 19. 11:05

๋ชฉ์ฐจ ๋ฐฐ์—ด ์„ ์–ธ ์ดˆ๊ธฐํ™” ์ ‘๊ทผ ๋‹ค์ฐจ์› ๋ฐฐ์—ด ํฌ์†Œ ํ–‰๋ ฌ ํ‘œํ˜„ ์ฃผ์†Œ์™€ ํฌ์ธํ„ฐ ํฌ์ธํ„ฐ ํŠน์ง• ์ œ์•ฝ ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๋™์  ๋ฐฐ์—ด(vector) ๋ฌธ์ž์—ด ์„ ์–ธ ์ดˆ๊ธฐํ™” ํ•จ์ˆ˜ ๋ฐฐ์—ด / ๋ฌธ์ž์—ด ๋ฐฐ์—ด ๋ฐฐ์—ด์ด๋ž€ ๋‹จ์ผ ์‹๋ณ„์ž๋กœ _๊ฐ™์€ ์ž๋ฃŒํ˜•_์˜ ์—ฌ๋Ÿฌ ๋ณ€์ˆ˜๋ฅผ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ์„ ์–ธ c++์—์„œ๋Š” int arr[3];์™€ ๊ฐ™์ด ์ž๋ฃŒํ˜• ๋ฐฐ์—ด์ด๋ฆ„[๋ฐฐ์—ด ๊ธธ์ด];๋กœ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•œ๋‹ค. ์ด ๋•Œ, ๋Œ€๊ด„ํ˜ธ ๋‚ด์˜ ์š”์†Œ์˜ ๊ฐฏ์ˆ˜๋Š” '์ปดํŒŒ์ผ ํƒ€์ž„ ์ƒ์ˆ˜'์—ฌ์•ผํ•œ๋‹ค. ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผํ•  ๋•Œ, ๊ณ ์ • ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ ์•Œ์•„์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋”ฐ๋ผ์„œ ๋งคํฌ๋กœ ๊ธฐํ˜ธ ์ƒ์ˆ˜ (ex_ #define ARRAY_LEN 5)๋‚˜ ์—ด๊ฑฐ์ž(ex_enum A{ARRAY_LEN = 5})๋Š” ๋ฐฐ์—ด์˜ ๊ธธ์ด๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. const ๋˜ํ•œ ์ปดํŒŒ์ผ ์‹œ ๊ณ ์ •๋˜๋Š” ์ƒ์ˆ˜์ด๋ฏ€๋กœ ์‚ฌ์šฉ๊ฐ€..

[c++] CAS ๊ตฌํ˜„ ๋ฐ ABA ๋ฌธ์ œ ํ•ด๊ฒฐ :: mutex(spin lock)์™€์˜ ๋น„๊ต
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/Algorithm 2020. 7. 2. 19:52

Mutex์™€์˜ ๋น„๊ต ์ฝ”๋“œ #include #include #include #include #include #include using namespace std; class Node { public: int value; Node* next; Node() : value(0) { next = NULL; } Node(int k_value) { next = NULL; value = k_value; } }; int node_n; //random ๊ตฌํ˜„ random_device rd; mt19937 gen(rd()); uniform_int_distribution dis(0, 10); //์ถœ๋ ฅ์„ ์œ„ํ•œ mutex mutex mut; class LFStack { private: Node * head; public: void ..

[c++] ๋ฐฐ์—ด ๋ฐ (STL) vector ์ดˆ๊ธฐํ™” ๋ฐฉ๋ฒ• ์ •๋ฆฌ
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/Algorithm 2020. 4. 13. 20:33

์ปจํ…Œ์ด๋„ˆ์— ๊ธฐ๋ณธ๊ฐ’ ์ฑ„์šฐ๊ธฐ ๋ฐฐ์—ด 1์ฐจ์› ๋ฐฐ์—ด ๊ธฐ์กด ์ฝ”๋“œ #include using namespace std; int main() { int arr[3]; for (int i = 0; i < 3; i++) { cout

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ๊ณผ์ œ 5. 2์˜ ํ™€์ˆ˜์ œ๊ณฑ์ˆ˜ - 1์€ ์†Œ์ˆ˜์ผ๊นŒ?
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/Algorithm 2020. 3. 28. 10:56

์†Œ์ˆ˜ ์ฐพ๊ธฐ ํ”„๋กœ๊ทธ๋žจ ๋ฐฉ๋ฒ• n-1๊นŒ์ง€ ๊ตฌํ•˜๊ธฐ O(n) n-1 ๊นŒ์ง€ ์†Œ์ˆ˜๋ฅผ ๋ชจ๋‘ ๊ตฌํ•˜๋Š” ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ์œผ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์งœ๊ธฐ ์†Œ์ˆ˜ ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด์„œ ์†Œ์ˆ˜ ๋ฐฐ์—ด๋งŒ ๋Œ๋ฉด์„œ ๋‚˜๋ˆ„์–ด์ง€๋Š”์ง€ ํŒ๋‹จ O(n) ์†Œ์ˆ˜ ๋ฐฐ์—ด์„ ๋งŒ๋“œ๋Š” ๋ฐ์— O(n) => ๋ฉ”๋ฆฌํŠธ ์—†์Œ ๋ฃจํŠธ n๊นŒ์ง€ ๋Œ๋ฆฌ๋ฉด์„œ ์ง์ˆ˜ ์ œ์™ธํ•˜๊ธฐ O(sqrt(n)) ์กฐ๊ฑด ์ถ”๊ฐ€ ๋ช‡ ๊ฐœ์˜ ์†Œ์ˆ˜( 3, 5 )๋ฅผ ๊ฐ€์ง€๊ณ  ํ•ด๋‹น ์ˆ˜์˜ ๋ฐฐ์ˆ˜์ด๋ฉด ๋›ฐ์–ด๋„˜๊ธฐ 3, 5 ๊ณ„์‚ฐ ์‹œ ๋‚˜๋ˆ„์–ด๋–จ์–ด์ง€์ง€ ์•Š์•˜์œผ๋ฉด ํ•ด๋‹น ์ˆ˜์˜ ๋ฐฐ์ˆ˜์—๋„ ๋‚˜๋ˆ„์–ด๋–จ์–ด์ง€์ง€ ์•Š์Œ ๊ตฌํ˜„ ์‹œ ์ฃผ์˜ ํ•ด๋‹น ์ˆ˜๊ฐ€ 3์œผ๋กœ ๋‚˜๋ˆ„์–ด๋–จ์–ด์ง€๋Š”์ง€, 5๋กœ ๋‚˜๋ˆ„์–ด๋–จ์–ด์ง€๋Š”์ง€๋ฅผ ๊ณ„์‚ฐํ•˜๋ ค๋ฉด ๋ชจ๋“ˆ๋Ÿฌ ์—ฐ์‚ฐ์„ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š”๋ฐ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆผ ๋ณ€์ˆ˜ ํ•˜๋‚˜์”ฉ ์ง€์ •ํ•˜๊ณ  1์”ฉ ๋”ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๊ตฌ์„ฑ 3๊ณผ 5์˜ ๊ณต๋ฐฐ์ˆ˜๊ฐ€ ๋‚˜์˜ค๋ฉด ๋จผ์ € ๊ฑฐ์น˜๋Š” 3์˜ if๋ฌธ์—์„œ continue ๋จ์œผ๋กœ ..