ํ์๊ณก์ DSA ๋์งํธ ์๋ช ์๋ฃ์กฐ์ฌ DSA๋? ๋์งํธ ์๋ช ์๊ณ ๋ฆฌ์ฆ(Digital Signature Algorithm, DSA)์ ๋์งํธ ์๋ช ์ ์ํ ํ์ค์ด๋ค. NIST๊ฐ 1991๋ 8์ DSS๋ผ๋ ๋ฏธ๊ตญ ์ ์์๋ช ํ์ค์์ ์ด์ฉํ๊ธฐ ์ํด ์ ๋ถ์ฉ ์ ์์๋ช ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๋ฐํํ์ผ๋ฉฐ, ํ์ฌ๋ DSA์ ํจ๊ป ECDSA, RSA๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค. ๋์งํธ ์๋ช ์ธ์ฆ ๋ฐฉ์ ์ ์์๋ช (๋์งํธ ์๋ช )์ ๋ฌด๊ฒฐ์ฑ, ์ธ์ฆ, ๋ถ์ธ๋ฐฉ์ง๋ฅผ ๋ง์กฑํด์ผํ๋ค. ์ ์์๋ช ์๋ ๊ณต๊ฐํค ์ํธํ ์๊ณ ๋ฆฌ์ฆ์ด ์ฐ์ด๋ฉฐ ํฌ๊ฒ 3๊ฐ์ง ์ข ๋ฅ์ ์๊ณ ๋ฆฌ์ฆ์ด ์๋ค. ํฉ์ฑ์์ ์์ธ์๋ถํด๋ฌธ์ ๊ฐ ์ด๋ ต๋ค๋ ๋ฐ์ ๊ธฐ์ดํ RSAํ ์๊ณ ๋ฆฌ์ฆ ์ ํ์ฒด์ ์ด์ฐ๋์ ๋ฌธ์ ๊ฐ ์ด๋ ต๋ค๋ ๋ฐ์ ๊ธฐ์ดํ ElGamalํ ์๊ณ ๋ฆฌ์ฆ ํ์๊ณก์ ์ ์ด์ฉํ EC-DSA, EC-KCDSA DSA๋ ์ด ์ค E..
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 ..
๋ชฉ์ฐจ ๋ฌธ์ ์ ์ lock free ๊ตฌํ ABA ํด๊ฒฐ intํ ๊ตฌํ(+ Hazard pointer) Counter ๊ทธ ์ธ์ ๋ฐฉ๋ฒ๋ค mutex lock(spin lock)๊ณผ์ ๋น๊ต Counter #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_distribut..
๋ชฉ์ฐจ ๋ฌธ์ ์ ์ lock free ๊ตฌํ ABA ํด๊ฒฐ intํ ๊ตฌํ(+ Hazard pointer) Counter ๊ทธ ์ธ์ ๋ฐฉ๋ฒ๋ค mutex lock(spin lock)๊ณผ์ ๋น๊ต Hazard Pointer https://m.blog.naver.com/PostView.nhn?blogId=jjoommnn&logNo=130127286459&proxyReferer=https:%2F%2Fwww.google.com%2F ๋ฅผ ์ฐธ๊ณ ํ์ฌ ์์ฑํ์๋ค. ๋ฌธ์ ์ ๋จผ์ delete๋ฅผ ์ด์ฉํ์ฌ ๊ฐ์ฒด๋ฅผ ์ญ์ ํ๋ฉด, ํด๋น ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๊ณ ์๋ ์ค๋ ๋์ ๋ฌธ์ ๊ฐ ์๊ธธ ์๋ ์๊ณ ๊ฐ์ฒด๊ฐ ์ญ์ ๋ ์ฃผ์์ ๋ค์ ๊ฐ์ ๊ฐ์ฒด๊ฐ ํ ๋น๋์ด ABA ๋ฌธ์ ๊ฐ ์ผ์ด๋ ๊ฐ๋ฅ์ฑ์ด ์๋ค. ์๋ก ๊ฐ์ฒด๋ฅผ ํ ๋นํ๋ ๊ฒ์ ์ฌ์ฉ์๊ฐ ๊ด๋ฆฌํ๋ list๊ฐ ์๋๋ค. 1๋ฒ ๋ฌธ์ ๋ฅผ ..
๋ชฉ์ฐจ ๋ฌธ์ ์ ์ lock free ๊ตฌํ ABA ํด๊ฒฐ intํ ๊ตฌํ(+ Hazard pointer) Counter ๊ทธ ์ธ์ ๋ฐฉ๋ฒ๋ค mutex lock(spin lock)๊ณผ์ ๋น๊ต ABA ํด๊ฒฐ intํ ๊ตฌํ ABA ๋ฌธ์ ๋ ๋งค๊ฐ๋ณ์๋ฅผ intํ์ผ๋ก ๊ตฌํํ๋ฉด ์ฝ๊ฒ ํด๊ฒฐํ ์ ์๋ค. ํ์ง๋ง ๋ฌธ์ ์ ์ ์กด์ฌํ๋ค(๋ท๋ถ๋ถ์ ์ธ๊ธ). ์ฝ๋ #define _CRT_SECURE_NO_WARNINGS #define NULL_INT -1 // NULL ๊ฐ #include #include #include #include #include // #include #include using namespace std; struct Node { int data; Node* next_node; }; int node_n; atomic free_l..
๋ชฉ์ฐจ ๋ฌธ์ ์ ์ lock free ๊ตฌํ ABA ํด๊ฒฐ intํ ๊ตฌํ(+ Hazard pointer) Counter ๊ทธ ์ธ์ ๋ฐฉ๋ฒ๋ค mutex lock(spin lock)๊ณผ์ ๋น๊ต ๋ฌธ์ ์ ์ ๋ฌธ์ Linked List ์๋ฃ๊ตฌ์กฐ์์ push()์ pop() ์ฐ์ฐ์ ๊ตฌํํ๋ค. Linked List๋ FreeList์ HeadList ๋๊ฐ์ง๊ฐ ์์ผ๋ฉฐ ์ฌ๋ฌ ์ค๋ ๋๊ฐ ๋ ๊ฐ์ List๋ฅผ ๋ฒ๊ฐ์๊ฐ๋ฉฐ push, pop ์ฐ์ฐ์ ์ํํ๋ค. ์ค๋ ๋๋ค์ด ๊ฐ๊ฐ ์ฐ์ฐ์ ์ํํ๊ธฐ ์ํด์๋ List๋ค์ ๋ํ ์ํธ๋ฐฐ์ ๊ฐ ํ์ํ๋ค. ํด์ ์ํธ ๋ฐฐ์ ์๋ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ง๋ง, ํฌ๊ฒ ๋๊ฐ์ง๋ก ๋๋ ์ ์๋ค. lock ๋ณ์์ ์กฐ๊ฑด์ ์ฒดํฌํ๋ฉฐ ๋ฐ๋ณต๋ฌธ์ ๋๊ณ ์๋ spin lock๊ณผ, lock ๋ณ์ ์์ด ๊ณ์ ์๋ํ๋ฉด์ ์ ์ ํ ๋์ ๋์์ ์ํ..
https://www.algospot.com/judge/problem/read/TRIANGLEPATH ๋ฌธ์ 6 1 2 3 7 4 9 4 1 7 2 7 5 9 4 ์ ํํ์ ๊ฐ์ด ์ผ๊ฐํ ๋ชจ์์ผ๋ก ๋ฐฐ์น๋ ์์ฐ์๋ค์ด ์์ต๋๋ค. ๋งจ ์์ ์ซ์์์ ์์ํด, ํ ๋ฒ์ ํ ์นธ์ฉ ์๋๋ก ๋ด๋ ค๊ฐ ๋งจ ์๋ ์ค๋ก ๋ด๋ ค๊ฐ๋ ๊ฒฝ๋ก๋ฅผ ๋ง๋ค๋ ค๊ณ ํฉ๋๋ค. ๊ฒฝ๋ก๋ ์๋ ์ค๋ก ๋ด๋ ค๊ฐ ๋๋ง๋ค ๋ฐ๋ก ์๋ ์ซ์, ํน์ ์ค๋ฅธ์ชฝ ์๋ ์ซ์๋ก ๋ด๋ ค๊ฐ ์ ์์ต๋๋ค. ์ด ๋ ๋ชจ๋ ๊ฒฝ๋ก ์ค ํฌํจ๋ ์ซ์์ ์ต๋ ํฉ์ ์ฐพ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ธ์. ์ ๋ ฅ ์ ๋ ฅ์ ์ฒซ ์ค์๋ ํ ์คํธ ์ผ์ด์ค์ ์ C(C > C; while (C--) { cin >> n; int index = 0; for (int i = 0; i ..
์ธ๊ทธ๋จผํธ ํธ๋ฆฌ https://www.acmicpc.net/blog/view/9 ๋ฐฑ์ค๋ ๊ธ ๋ฐฐ์ด ํฌ๊ธฐ ๊ฒฐ์ ์ธ๊ทธ๋จผํธ ํธ๋ฆฌ๋ฅผ ๋ง๋ค๊ธฐ ์ํด์ C++์ ๊ฒฝ์ฐ, vector ์๋ฃํ์ ์ฌ์ฉํ๋๋ฐ python์ผ๋ก ๊ตฌํํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋ฐฐ์ด์ ์ฌ์ฉํ๋ ค๊ณ ํ๋ค. ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ ์ผ๋ง๋ ๋์ด์ผ ํ ์ง ๊ฐ๋ ํ๊ธฐ ์ํด ํฌ๊ธฐ๋ฅผ ๊ฒฐ์ ํด๋ณด์. 2์ ์ ๊ณฑ ์๊ฐ ๋ฆฌํ ๋ ธ๋์ ์(n)๋ก ์ฃผ์ด์ง๋ค๋ฉด ( ๋ถ์ํด์ผํ data ๊ฐฏ์๊ฐ 2์ ์ ๊ณฑ ์๋ผ๋ฉด ) ๊ฐ ๋จ๊ณ๋ง๋ค 1/2์ฉ ์ค์ด๋๊ฐ๋ฏ๋ก log(n)์ด ํ์ํ ์ด ๋จ๊ณ(ํ์ดํ)๊ฐ ๋๊ณ ์ ์ฒด ์ธต์ ๊ฐฏ์, ์ฆ ๋์ด(h)๋ log(n)+1์ด ๋๋ค. ์ต์์ ๋ ธ๋๋ถํฐ 2^(0)๊ฐ์ ๋ ธ๋๋ก ์์ํ์ฌ ์ธต์ด ์ฆ๊ฐํ ์๋ก 2์ ์ง์ ๋ํ ์ฆ๊ฐํ๊ธฐ ๋๋ฌธ์ ๊ฝ์ฐฌ ์ด์ค ํธ๋ฆฌ(full binary tree)์ ์ด ๋ ธ๋ ..
Comment