[์ปดํ“จํ„ฐ ๋ณด์•ˆ] ํ•ด์‹œํ•จ์ˆ˜ (์ •์˜, ํšจ๊ณผ, ์šฉ๋„, ์ข…๋ฅ˜, ๊ตฌํ˜„, ์•ฝ์ )
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/Computer Security 2020. 4. 8. 08:20

์ผ๋ฐฉํ–ฅ ํ•ด์‹œํ•จ์ˆ˜ ์ •์˜ ํ•ด์‹œํ•จ์ˆ˜ ์ค‘ ์—ญ์ƒ์ €ํ•ญ์„ฑ, ์ œ2์—ญ์ƒ์ €ํ•ญ์„ฑ, ์ถฉ๋Œ์ €ํ•ญ์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํ•จ์ˆ˜ ํ•ด์‹œํ•จ์ˆ˜ : ์ž„์˜ ๊ธธ์ด์˜ ๋ฉ”์„ธ์ง€๋ฅผ ์ผ์ • ๊ณ ์ • ๊ธธ์ด์˜ ํ•ด์‰ฌ ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜์‹œ์ผœ์ฃผ๋Š” ๋‹จ๋ฐฉํ–ฅ์„ฑ ํ•จ์ˆ˜/์•Œ๊ณ ๋ฆฌ์ฆ˜ ์—ญ์ƒ ์ €ํ•ญ์„ฑ(preimage resistance) : ์ œ 1 ์—ญ์ƒ ๊ณต๊ฒฉ์— ๋Œ€ํ•˜์—ฌ ์•ˆ์ „ํ•œ ๊ฒƒ ์ œ 1 ์—ญ์ƒ ๊ณต๊ฒฉ : ํ•ด์‹œ๊ฐ’์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ทธ ํ•ด์‹œ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋Š” ์ž…๋ ฅ๊ฐ’์„ ์ฐพ๋Š” ๊ณต๊ฒฉ ๋‹จ๋ฐฉํ–ฅ ์•”ํ˜ธํ™”์™€ ๊ด€๋ จ ์žˆ์Œ ๋‹จ๋ฐฉํ–ฅ ์•”ํ˜ธํ™” : A => f => B (์•”ํ˜ธํ™”) A

[์ปดํ“จํ„ฐ ๋ณด์•ˆ] ์น˜ํ™˜ ์•”ํ˜ธ vs ์ „์น˜ ์•”ํ˜ธ :: ์ฃผ์ƒ์ „์น˜์•”ํ˜ธ
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/Computer Security 2020. 4. 8. 08:18

์ฃผ์ƒ์ „์น˜์•”ํ˜ธ ์ „์น˜ ์•”ํ˜ธ๋ž€? ์น˜ํ™˜ ์•”ํ˜ธ๊ฐ€ ํ‰๋ฌธ ๋ฌธ์ž๋ฅผ ๋‹ค๋ฅธ ๋ฌธ์ž๋กœ ์–ด๋– ํ•œ ๊ทœ์น™์— ๋”ฐ๋ผ ๋Œ€์‘์‹œ์ผœ ์•”ํ˜ธํ™”ํ•˜๋Š” ๋ฐฉ์‹์ด๋ผ๋ฉด, ์ „์น˜ ์•”ํ˜ธ๋Š” ํ‰๋ฌธ ๋ฌธ์ž์˜ ์ž๋ฆฌ๋ฅผ ๋ฐ”๊พธ๋Š” ๊ทœ์น™์ด๋‹ค. ์ฆ‰, ์น˜ํ™˜ ์•”ํ˜ธ๋Š” ํ‰๋ฌธ ๋ฌธ์ž์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฌธ์ž ์ง‘ํ•ฉ๊ณผ ์•”ํ˜ธ๋ฌธ์˜ ๋ฌธ์ž ์ง‘ํ•ฉ์ด ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์ง€๋งŒ, ์ „์น˜ ์•”ํ˜ธ์—์„œ๋Š” ๊ฐ™๋‹ค. ๋˜ํ•œ ๋ฌธ์ž๊ฐ€ ๋ฌธ์ž๋กœ ๋Œ€์‘๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํ•ด๋‹น ๋ฌธ์ž์˜ ์œ„์น˜๊ฐ€ ์œ„์น˜๋กœ ๋Œ€์‘๋œ๋‹ค. ์ „์น˜ ์•”ํ˜ธ ์ข…๋ฅ˜ ๋‹จ์ˆœ ์ „์น˜ ์•”ํ˜ธ ๊ธฐ์กด ํ‰๋ฌธ์„ ์ฃผ์–ด์ง„ ํ‚ค ๊ฐ’(๋ฌธ์žฅ์˜ ๊ธธ์ด์— ํ•ด๋‹นํ•˜๋Š” ์ˆœ์—ด)๋กœ ์•”ํ˜ธํ™” ํ•œ๋‹ค. ์•”ํ˜ธํ™”ํ•  ๋•Œ ์‚ฌ์šฉํ•œ ์•”ํ˜ธํ™” ํ‚ค๋กœ ๋ณตํ˜ธํ™” ํ‚ค๋ฅผ ์•Œ์•„๋‚ด์„œ ๋ณตํ˜ธํ™”์— ์‚ฌ์šฉํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ๋น„๋ฐ€ ํ‚ค ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค. ๋ณตํ•ฉ ์ „์น˜ ์•”ํ˜ธ ์˜ˆ๋ฅผ ๋“ค์–ด "I AM HEEEUN I AM SENIOR"๋ผ๋Š” ๋ฌธ์žฅ์„ ์ „์น˜ ์•”ํ˜ธ๋กœ ์•”ํ˜ธํ™” ์‹œํ‚ฌ ๋•Œ, ์ฃผ์–ด์ง„ ๋ฌธ์ž ์ง‘ํ•ฉ์— ..

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ๊ณผ์ œ 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 ๋จ์œผ๋กœ ..

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ๊ณผ์ œ 4. 1000๋งŒ๊ฐœ ๋ฐ์ดํ„ฐ ํ€ต ์ •๋ ฌ ์‹œ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/Algorithm 2020. 3. 28. 10:42

Quick sort '์•Œ๊ณ ๋ฆฌ์ฆ˜' ์ „๊ณต ์ˆ˜์—…์‹œ๊ฐ„์— ๋‚˜์˜จ ๊ณผ์ œ์ธ '1000๋งŒ๊ฐœ ๋ฐ์ดํ„ฐ ์ •๋ ฌ ํ›„ ํ•ด์‹œ ๊ฐ’ ๊ตฌํ•˜๊ธฐ'๋ฅผ ํ•˜๋ฉด์„œ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ด๋‹ค. ๋ถ„ํ•  ์ •๋ณต ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด ๊ตฌํ˜„๋˜๋Š” ์ •๋ ฌ ๋ฐฉ๋ฒ• ์‹œ๊ฐ„ ๋ณต์žก๋„ ์ตœ์•… : O(n^2) ํ‰๊ท  : O(nlogn) ์„ค๊ณ„๋ฅผ ํ†ตํ•ด์„œ ๊ฐœ์„  ๊ฐ€๋Šฅํ•œ ๋ถ€๋ถ„ ๊ตฌํ˜„ ๊ณผ์ • pivot์„ ์„ ํƒํ•œ๋‹ค. ์œ„์ชฝ ํฌ์ธํ„ฐ๊ฐ€ ๋‚ฎ์€ ์ชฝ์œผ๋กœ ๊ฐ€๋ฉด์„œ ํ”ผ๋ฒ—๋ณด๋‹ค ์ž‘์€ ์ˆ˜๋ฅผ ์ฐพ๋Š”๋‹ค. ์•„๋ž˜์ชฝ ํฌ์ธํ„ฐ๊ฐ€ ๋†’์€ ์ชฝ์œผ๋กœ ๊ฐ€๋ฉด์„œ ํ”ผ๋ฒ—๋ณด๋‹ค ํฐ ์ˆ˜๋ฅผ ์ฐพ๋Š”๋‹ค. ๋‘ ํฌ์ธํ„ฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์š”์†Œ๋ฅผ ๊ตํ™˜ํ•œ๋‹ค. 2-4๋ฅผ ๋ฐ˜๋ณตํ•œ๋‹ค. ๋‘ ํฌ์ธํ„ฐ๊ฐ€ ๊ต์ฐจํ•œ๋‹ค๋ฉด ํ˜„์žฌ ํ”ผ๋ฒ—๊ณผ ํ•ด๋‹น ์œ„์น˜์˜ ๊ฐ’์„ ๊ตํ™˜ํ•œ๋‹ค. ํ”ผ๋ฒ—๊ณผ ํ”ผ๋ฒ—๋ณด๋‹ค ์ž‘์€ section, ํ”ผ๋ฒ—๋ณด๋‹ค ํฐ section์œผ๋กœ ๋‚˜๋ˆ„๊ณ  ๊ฐ section์— ๋Œ€ํ•ด 1-5๋ฅผ ์‹คํ–‰ํ•œ๋‹ค. section์˜ ํฌ๊ธฐ๊ฐ€ 0 ๋˜๋Š” 1์ด๋ฉด ..

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ๊ณผ์ œ 3. Tony Hoare :: QuickSort ๋…ผ๋ฌธ ํ•ด์„ํ•˜๊ธฐ
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/Algorithm 2020. 3. 26. 16:56

QuickSort ๋…ผ๋ฌธ brief Part One: Theory ์ด sorting์€ ๋‘ ๊ฐœ์˜ ๊ฐ„๋‹จํ•œ ๋ณด์กฐ๋ฌธ์ œ๋กœ ๋‚˜๋‰˜์–ด ํ•ด๊ฒฐ๋  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๊ฐ ๋ฌธ์ œ๋Š” ์ด๋ฏธ ์•Œ๋ ค์ง„ ๋ฐฉ์‹์œผ๋กœ ํ’€ ์ˆ˜ ์žˆ๋‹ค. Partition : key๊ฐ’์„ dividing line์— ๋”ฐ๋ผ ์œ„ ์•„๋ž˜๋กœ ๋‚˜๋ˆ„์–ด ์ด๋ถ„ํ•˜๋Š” ๊ฒƒ ์‹ค์ œ๋กœ ์ด dividing line์€ ํ”์น˜ ์•Š๊ณ , ์žˆ๋‹ค ํ• ์ง€๋ผ๋„ ์ฐพ๊ธฐ ํž˜๋“ ๋ฐ dividing line์ด ์กด์žฌํ•˜๊ณ  ๊ทธ๊ฒƒ์˜ ์œ„์น˜๋งŒ ์•ˆ๋‹ค๋ฉด item๋“ค์„ ์žฌ์ •๋ ฌํ•˜๊ธฐ๋Š” ์‰ฌ์›Œ์ง„๋‹ค. partition ๊ณผ์ • ์ •๋ ฌ๋˜์–ด์•ผํ•˜๋Š” ์•„์ดํ…œ์˜ ํ‚ค ์ค‘ ํŠน์ • ํ‚ค๋ฅผ ๊ณ ๋ฅธ๋‹ค. ์ด ํ‚ค๋Š” bound ๋ผ ๋ถˆ๋ฆฐ๋‹ค. dividing line ์•„๋ž˜์—๋Š” bound๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ key๊ฐ’์ด, ์œ„์ชฝ์—๋Š” ํฐ key ๊ฐ’์ด ์˜ค๊ฒŒ ํ•œ๋‹ค. dividing line์˜ ์œ„์น˜๋Š” ๋ฏธ๋ฆฌ ์•Œ ํ•„์š”..

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ๊ณผ์ œ 2. 1000๋งŒ๊ฐœ ๋ฐ์ดํ„ฐ ์‚ฝ์ž… ์ •๋ ฌ ์‹œ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/Algorithm 2020. 3. 25. 20:01

/* 2020-03-19 ์šฐํฌ์€ ์‚ฝ์ž…์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ */ #define _CRT_SECURE_NO_WARNINGS #include #include #include #include int buffer[10000000]; // ์ „์—ญ ๋ณ€์ˆ˜๋กœ ๋„ฃ์–ด์•ผ stack overflow๊ฐ€ ๋‚˜์ง€ ์•Š์Œ void fileOpen() { FILE *fp = fopen("d://algorithm/unsorted10000000.txt", "r"); int i = 0; int tmp = 0; if (fp == NULL) { printf("ํŒŒ์ผ์„ ์—ด ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.\n"); } while (fscanf(fp, "%d ", &tmp)!=EOF) { buffer[i++] = tmp; } fclose(fp); } void insertSortin..

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ๊ณผ์ œ 1. ์‹œ๊ฐ„ ๋ณต์žก๋„ ๊ณ„์‚ฐ :: ๊ฐ ์‹œ๊ฐ„ ๋ณต์žก๋„์— ํ•ด๋‹นํ•˜๋Š” ์†Œ์š”์‹œ๊ฐ„์„ ๊ตฌํ•ด๋ณด์ž
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/Algorithm 2020. 3. 25. 19:52

์ฒซ๋ฒˆ์งธ ๊ณผ์ œ์ด๋‹ค. ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ f(n)์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์†Œ์š”์‹œ๊ฐ„์ด 1 nanosecond == 10^(-9) second ์ด๋ผ๊ณ  ํ•  ๋•Œ, ์™ผ์ชฝ์— ํ‘œ์‹œ๋œ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•ด ์œ„์ชฝ์˜ ์‹œ๊ฐ„ ๋‚ด์— ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์™„๋ฃŒ๋˜๋ ค๋ฉด ์ตœ๋Œ€๋กœ ์–ด๋–ค N๊นŒ์ง€ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์„์ง€ ์•Œ์•„๋ณด์ž. ๋Œ€ํ‘œ๋กœ ํ•˜๋‚˜๋ฅผ ๊ณ„์‚ฐํ•ด๋ณด๋ฉด 1sec๋Š” 10^(9) nanosec ์ด๋ฏ€๋กœ n^2์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ–๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ n^2 = 10^(9) ๋กœ ๋‘๊ณ  ํ’€๋ฉด 1sec ๋งŒ์— ๊ณ„์‚ฐ๋  ์ˆ˜ ์žˆ๋Š” n ๊ฐ’์ด ๋‚˜์˜จ๋‹ค. n ๊ฐ’์€ ๋ชจ๋‘ ์ •์ˆ˜๋กœ ๊ฐ€์ •ํ•˜์˜€๋‹ค.

[python] ์„ธ๊ทธ๋จผํŠธ ํŠธ๋ฆฌ ๊ตฌํ˜„ํ•˜๊ธฐ (segment tree) - ์ตœ์†Œ๊ฐ’ ๊ตฌํ•˜๊ธฐ
์ปดํ“จํ„ฐ๊ณผํ•™ (CS)/Algorithm 2020. 3. 15. 22:39

์„ธ๊ทธ๋จผํŠธ ํŠธ๋ฆฌ 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)์˜ ์ด ๋…ธ๋“œ ..