๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿบ ๋งค์ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜

Sieve of Eratosthenes, ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒดSieve of Eratosthenes๋Š” 2๋ถ€ํ„ฐ n๊นŒ์ง€์˜ ์ˆซ์ž ์ค‘ ๋ชจ๋“  ์†Œ์ˆ˜prime number๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•œ ๊ฐ„๋‹จํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.1. ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ 2 ๋ถ€ํ„ฐ n๊นŒ์ง€์˜ ๋ชจ๋“  ์ˆซ์ž๋ฅผ set={ 2, 3, ..., n} ์ง‘ํ•ฉ์— ๊ฐ–๊ณ ์žˆ๋‹ค.2. ์•„์ง ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์€ ์ˆซ์ž ์ค‘ ๊ฐ€์žฅ ์ž‘์€ ์ˆซ์ž๋ฅผ ์„ ํƒํ•œ๋‹ค.3. ํ•ด๋‹น ์ˆซ์ž์˜ ๋ฐฐ์ˆ˜๋“ค์„ ์ง‘ํ•ฉ์—์„œ ๋ชจ๋‘ ์ง€์šด๋‹ค. 4. 2๋กœ ๋Œ์•„๊ฐ„๋‹ค. ๋. ์œ„์˜ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ชจ๋“  ํ•ฉ์„ฑ์ˆ˜๋“ค์„ ์ง‘ํ•ฉ์—์„œ ์ง€์šธ ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ 2-4๋ฒˆ์„ N๋ฒˆ ๋ฐ˜๋ณตํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค๋ฉด O(n**2)์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ๊ฒƒ์ด๋‹ค. O(n log log n) ์‹œ๊ฐ„ ๊ฑธ๋ฆฌ๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•ฉ์„ฑ์ˆ˜composite number๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๋™์ž‘์˜ ์ค‘๋ณต์„ ์ค„์ด๋ฉด๋œ๋‹ค.- ๋ชจ๋“  ํ•ฉ์„ฑ์ˆ˜composite number ๋Š” ์ตœ.. ๋”๋ณด๊ธฐ
์ฝ”๋”ฉํ…Œ์ŠคํŠธ์—์„œ ์š”๊ตฌ๋˜๋Š” ์‹œ๊ฐ„๋ณต์žก๋„ ์–ด๋ฆผ์žก๊ธฐ ์˜จ๋ผ์ธ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ์—์„œ๋Š” ์ œํ•œ์‹œ๊ฐ„๋‚ด์— ๋ฌธ์ œ์˜ ๋”ฐ๋ฅธ ์ •ํ™•ํ•œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•ด์•ผํ•œ๋‹ค. ์ œํ•œ์‹œ๊ฐ„๋‚ด์— ๋™์ž‘ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ? ์ปดํŒŒ์ผ๋Ÿฌ, ๊ฐ ์ปดํ“จํ„ฐ์˜ ํ”„๋กœ์„ธ์„œ์˜ ์ฐจ์ด ๋“ฑ์ด ์‹คํ–‰์‹œ๊ฐ„์— ์˜ํ–ฅ์„ ๋ผ์น˜๊ฒ ์ง€๋งŒ, ์ปดํ“จํ„ฐ๋Š” ํ‰๊ท ์ ์œผ๋กœ 10**8๊ฐœ์˜ ์—ฐ์‚ฐ์„ 1์ดˆ์ด๋‚ด์— ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์‹œ๊ฐ„์ œํ•œ๊ณผ ์ฃผ์–ด์ง„ ๋ฐ์ดํ„ฐ ํฌ๊ธฐ ์ œํ•œ์— ๋”ฐ๋ฅธ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ์˜ˆ์ธกํ•˜๊ณ  ๊ทธ๊ฒƒ์— ๋งž๊ฒŒ ๋‹ต์•ˆ์„ ์ž‘์„ฑํ•˜๋Š” ํŽธ์ด ๋” ๋น ๋ฅธ ์†”๋ฃจ์…˜์ด ์žˆ์ง€์•Š์„๊นŒ ๊ณ ๋ฏผํ•˜๋Š” ๊ฒƒ ๋ณด๋‹ค ํšจ์œจ์ ์ด๋‹ค. ๋ฐ์ดํ„ฐ ํฌ๊ธฐ ์ œํ•œ ์˜ˆ์ƒ๋˜๋Š” ์‹œ๊ฐ„ ๋ณต์žก๋„ n ๋”๋ณด๊ธฐ
Asymptotic analysis, ์ ๊ทผ์  ํ‘œ๊ธฐ๋ฒ•. ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์„ฑ๋Šฅ์„ ๋ถ„์„ํ•˜๊ธฐ์œ„ํ•ด ์ ๊ทผ์  ํ‘œ๊ธฐ๋ฒ•์„ ์ด์šฉํ•ด ์‹œ๊ฐ„๋ณต์žก๋„ ์‚ฌ์šฉํ•œ๋‹ค. ๋‹จ์ˆœํžˆ ํŠน์ • ์ž…๋ ฅ ๊ฐ’์— ๋”ฐ๋ฅธ ์‹คํ–‰์‹œ๊ฐ„(running time)์„ ๋น„๊ตํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ, ์ž…๋ ฅ๊ฐ’์ด ์ฆ๊ฐ€ํ•จ์— ๋”ฐ๋ฅธ Running time์˜ rate of growth๋ฅผ ํ‘œํ˜„ํ•œ ๊ฒƒ์ด ์‹œ๊ฐ„ ๋ณต์žก๋„(time complexity)์ด๋‹ค. โ€‹ โ€‹Big-theta Running time์— ๋Œ€ํ•œ ์ ๊ทผ์ ์ธ ํ•œ๊ณ„๊ฐ’์„ Big theta๋ผ ํ•œ๋‹ค. ์ฆ‰, ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํ‰๊ท  ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๋งํ•œ๋‹ค. โ€‹Big-O ๋น…์˜ค๋Š” running time์— ๋Œ€ํ•œ ์ ๊ทผ์ ์ธ ์ƒํ•œ๊ฐ’์„ ๋งํ•œ๋‹ค. ์ฆ‰, ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ตœ์•…์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„์ด๋‹ค. ๋ณดํŽธ์ ์œผ๋กœ ‘์‹œ๊ฐ„ ๋ณต์žก๋„’๋Š” ์ตœ์•…์˜ ์ผ€์ด์Šค๋ฅผ ์ปค๋ฒ„ํ•˜๋Šฅ ๋น…์˜ค๋ฅผ ๋งํ•œ๋‹ค. โ€‹Big-omega ๋น… ์˜ค๋ฉ”๊ฐ€๋Š” running time์— ๋Œ€ํ•œ ์ ๊ทผ์ ์ธ ํ•˜ํ•œ๊ฐ’์„ ๋งํ•œ๋‹ค.. ๋”๋ณด๊ธฐ
Binary search, ์ด์ง„ ํƒ์ƒ‰ ๋ฆฌ์ŠคํŠธ A = [ 0, 1, ,2, 3 ] ์ด ์žˆ์„ ๋•Œ, ๋งˆ์ง€๋ง‰ ์›์†Œ์ธ '3'์„ ์ฐพ๋Š”๋‹ค๊ณ  ํ•ด๋ณด์ž. Simple search, ๋‹จ์ˆœ ํƒ์ƒ‰์˜ ๊ฒฝ์šฐ์ฒ˜์Œ๋ถ€ํ„ฐ ์ˆœ์ฐจ์ ์œผ๋กœ ์›์†Œ ๊ฐ’์„ ํ™•์ธํ•œ๋‹ค. ๋งˆ์ง€๋ง‰์— ์œ„์น˜ํ•˜๊ณ  ์žˆ๋Š” ์›์†Œ์ธ '3'์„ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฆฌ์ŠคํŠธ์˜ ๊ธธ์ด์™€ ๊ฐ™์€ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ๋‹ค. ๋ฆฌ์ŠคํŠธ์˜ ๊ธธ์ด์™€ ๊ฐ™์€์‹œ๊ฐ„์„ O(n), linear time ์„ ํ˜•์‹œ๊ฐ„ ์ด๋ผ๊ณ  ํ•œ๋‹ค. Binary search, ์ด์ง„ ํƒ์ƒ‰์€๋ฆฌ์ŠคํŠธ์˜ ์ค‘๊ฐ„์— ์žˆ๋Š” ์›์†Œ์˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ ํƒ์ƒ‰ํ•  ๊ตฌ๊ฐ„(range)๋ฅผ ๋ฐ˜์”ฉ ์ค„์—ฌ๋‚˜๊ฐ€ O(log n), logarithm time ๋กœ๊ทธ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š” ๋ฐฉ์‹์ด๋‹ค. ๋งŒ์•ฝ 100๊ฐœ์˜ ์›์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฆฌ์ŠคํŠธ๋ผ๋ฉด ํƒ์ƒ‰ํ•  ๊ตฌ๊ฐ„์ด 100 ์—์„œ 50, 25, 13, 7, 4, 2, 1 ์ˆœ์œผ๋กœ ์ค„์–ด๋“ ๋‹ค. ๋”ฐ๋ผ์„œ, A์˜ ์ค‘๊ฐ„์— ์œ„์น˜ํ•œ .. ๋”๋ณด๊ธฐ
์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์„ ์ˆ˜ ์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์„ ์ˆ˜๋ฌธ์ œํ’€๋Ÿฌ๊ฐ€๊ธฐ ๋‹จ ํ•œ ๋ช…์˜ ์„ ์ˆ˜๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ๋ชจ๋“  ์„ ์ˆ˜๊ฐ€ ๋งˆ๋ผํ†ค์„ ์™„์ฃผํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋งˆ๋ผํ†ค์— ์ฐธ์—ฌํ•œ ์„ ์ˆ˜๋“ค์˜ ์ด๋ฆ„์ด ๋‹ด๊ธด ๋ฐฐ์—ด participant์™€ ์™„์ฃผํ•œ ์„ ์ˆ˜๋“ค์˜ ์ด๋ฆ„์ด ๋‹ด๊ธด ๋ฐฐ์—ด completion์ด ์ฃผ์–ด์งˆ ๋•Œ, ์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์„ ์ˆ˜์˜ ์ด๋ฆ„์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ์ œํ•œ์‚ฌํ•ญ ๋งˆ๋ผํ†ค ๊ฒฝ๊ธฐ์— ์ฐธ์—ฌํ•œ ์„ ์ˆ˜์˜ ์ˆ˜๋Š” 1๋ช… ์ด์ƒ 100,000๋ช… ์ดํ•˜์ž…๋‹ˆ๋‹ค.completion์˜ ๊ธธ์ด๋Š” participant์˜ ๊ธธ์ด๋ณด๋‹ค 1 ์ž‘์Šต๋‹ˆ๋‹ค.์ฐธ๊ฐ€์ž์˜ ์ด๋ฆ„์€ 1๊ฐœ ์ด์ƒ 20๊ฐœ ์ดํ•˜์˜ ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.์ฐธ๊ฐ€์ž ์ค‘์—๋Š” ๋™๋ช…์ด์ธ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. def solution(participant, completion): answer = '' comp = completio.. ๋”๋ณด๊ธฐ
๋‚˜๋จธ์ง€ ํ•œ ์  ๋‚˜๋จธ์ง€ ํ•œ ์ ํ’€์–ด๋ณด๋Ÿฌ๊ฐ€๊ธฐ ์ง์‚ฌ๊ฐํ˜•์„ ๋งŒ๋“œ๋Š” ๋ฐ ํ•„์š”ํ•œ 4๊ฐœ์˜ ์  ์ค‘ 3๊ฐœ์˜ ์ขŒํ‘œ๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ, ๋‚˜๋จธ์ง€ ํ•œ ์ ์˜ ์ขŒํ‘œ๋ฅผ ๊ตฌํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์  3๊ฐœ์˜ ์ขŒํ‘œ๊ฐ€ ๋“ค์–ด์žˆ๋Š” ๋ฐฐ์—ด v๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์ง์‚ฌ๊ฐํ˜•์„ ๋งŒ๋“œ๋Š” ๋ฐ ํ•„์š”ํ•œ ๋‚˜๋จธ์ง€ ํ•œ ์ ์˜ ์ขŒํ‘œ๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”. ๋‹จ, ์ง์‚ฌ๊ฐํ˜•์˜ ๊ฐ ๋ณ€์€ x์ถ•, y์ถ•์— ํ‰ํ–‰ํ•˜๋ฉฐ, ๋ฐ˜๋“œ์‹œ ์ง์‚ฌ๊ฐํ˜•์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๋งŒ ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.์ œํ•œ์‚ฌํ•ญv๋Š” ์„ธ ์ ์˜ ์ขŒํ‘œ๊ฐ€ ๋“ค์–ด์žˆ๋Š” 2์ฐจ์› ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค.v์˜ ๊ฐ ์›์†Œ๋Š” ์ ์˜ ์ขŒํ‘œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ์ขŒํ‘œ๋Š” [x์ถ• ์ขŒํ‘œ, y์ถ• ์ขŒํ‘œ] ์ˆœ์œผ๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.์ขŒํ‘œ๊ฐ’์€ 1 ์ด์ƒ 10์–ต ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.์ง์‚ฌ๊ฐํ˜•์„ ๋งŒ๋“œ๋Š” ๋ฐ ํ•„์š”ํ•œ ๋‚˜๋จธ์ง€ ํ•œ ์ ์˜ ์ขŒํ‘œ๋ฅผ [x์ถ• ์ขŒํ‘œ, y์ถ• ์ขŒํ‘œ] ์ˆœ์œผ๋กœ ๋‹ด์•„ return ํ•ด.. ๋”๋ณด๊ธฐ
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฌธ์ œํ’€์ด๊ณผ์ • ๋ถ„์„ํ•˜๊ธฐ ์ข…๋งŒ๋ถ์˜ ๋ฌธ์ œํ•ด๊ฒฐ๊ฐœ๊ด€ ํŒŒํŠธ๋ฅผ ์ฝ๊ณ  ๋ฌธ์ œํ’€์ด์‹œ์— ์‹ค์ฒœํ•˜๊ธฐ ์œ„ํ•ด ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋Œ€ํšŒ์˜ ๋ฌธ์ œ๋ฅผ ์ž˜ ํ’€๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋Šฅ๋ ฅ์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ & ์ž๋ฃŒ๊ตฌ์กฐ & ์‚ฌ์šฉํ•˜๋Š” ์ปดํ“จํ„ฐ ์–ธ์–ด์˜ ๋ฌธ๋ฒ•๊ณผ ํŠน์ง• ๋“ฑ์— ๋Œ€ํ•œ ๋ฐฐ๊ฒฝ์ง€์‹, ์ž์‹ ์ด ์•„๋Š” ๊ฒƒ์„ ์ด์šฉํ•ด ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋‚ด๋Š” ๋ฌธ์ œํ•ด๊ฒฐ๋Šฅ๋ ฅ, ์ƒ๊ฐํ•ด๋‚ธ ๋ฌธ์ œํ•ด๊ฒฐ๋ฐฉ๋ฒ•์„ ์ •ํ™•ํžˆ ๊ตฌํ˜„ํ•ด๋‚ด๋Š” ๊ตฌํ˜„๋ ฅ์ด๋‹ค. ๋ฌธ์ œํ•ด๊ฒฐ๋Šฅ๋ ฅ์„ ํ‚ค์šฐ๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฌธ์ œ๋ฅผ ๋งŽ์ด ํ’€์–ด๋ณด์•„์•ผ ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ๋ง‰์—ฐํ•œ ์‹œ๋„๋ฅผ ๋ฐ˜๋ณตํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋Š” ๋ถ€์กฑํ•˜๋‹ค. ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š” ๋ฐฉ์‹์„ ์—ฐ๋งˆํ•˜๊ธฐ ์œ„ํ•ด ์ž์‹ ์ด ๋ฌธ์ œ๋ฅผ ์–ด๋–ป๊ฒŒ ํ’€๊ณ  ์žˆ๋Š”์ง€, ์–ด๋–ค ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐœ์„ ํ•ด์•ผํ•˜๋Š”์ง€ ๋Š์ž„์—†์ด ํŒŒ์•…ํ•ด์•ผํ•œ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š” ๊ณผ์ •์„ ์—ฌ๋Ÿฌ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋ˆ ๋ณด๊ณ  ๊ฐ ๊ณผ์ •์„ ์ž์‹ ์ด ์ž˜ํ•˜๊ณ  ์žˆ๋Š”์ง€, ์–ด๋–ค ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐœ์„ ํ•ด์•ผํ•˜๋Š”์ง€ ์•Œ์•„๋ณด์ž. 1. ๋ฌธ์ œ .. ๋”๋ณด๊ธฐ
Algorithm week 1: Union-Find Algorithms, Part 1: week1 Lecture note: I implemented codes in python3. Steps to developing a usable algorithm.๔€‰พ Model the problem. ( try to understand the main elements of the problem that needs to be solved. )ํ•ด๊ฒฐํ•ด์•ผํ•˜๋Š” ์š”์†Œ๋ฅผ ์ดํ•ดํ•˜๊ณ  ๋ฌธ์ œ๋ฅผ ๋ชจ๋ธ๋งํ•œ๋‹ค.๔€‰พ Find an algorithm to solve it.๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์•Œ์•„๋‚ธ๋‹ค.๔€‰พ Fast enough? Fits in memory?์ถฉ๋ถ„ํžˆ ๋น ๋ฅธ์ง€, ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์€ ์ ๋‹นํ•œ์ง€ ๊ณ ๋ คํ•œ๋‹ค.๔€‰พ If not, figure out why.์•„๋‹ˆ๋ผ๋ฉด, ์™œ ๊ทธ๋Ÿฐ์ง€ ์•Œ์•„๋‚ธ๋‹ค.๔€‰พ Fin.. ๋”๋ณด๊ธฐ