Notice
Recent Posts
Recent Comments
Link
๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋ก์ „์ฒด ๊ธ€ (1103)

KoreanFoodie's Study

ํ€ต ์ •๋ ฌ(Quick sort) - ํŒŒ์ด์ฌ ์ฝ”๋“œ ๊ตฌํ˜„

Quick sort python code implementation ํ€ต์†ŒํŠธ(Quicksort)๋ฅผ ํŒŒ์ด์ฌ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•ด ๋ณด์ž. ํ€ต ์†ŒํŠธ(Quick sort) ํ€ต ์†ŒํŠธ๋Š” ๋ฐฐ์—ด์„ ํŒŒํ‹ฐ์…˜์„ ์ด์šฉํ•ด์„œ ๋ฐ˜์œผ๋กœ ๋‚˜๋ˆ„๊ณ , ๋‹ค์‹œ ์ด์ „ ๋ฐฐ์—ด์„ ๋ฐ˜์œผ๋กœ ๋‚˜๋ˆˆ ๋ฐฉ์‹์„ ์žฌ๊ท€์ ์œผ๋กœ ์ ์šฉํ•œ๋‹ค. ํŒŒํ‹ฐ์…˜์€ ์ผ๋ฐ˜์ ์œผ๋กœ, ์ œ์ผ ๋ ๋ฐฐ์—ด์˜ ์›์†Œ๋ฅผ pivot์œผ๋กœ ์žก๊ณ , ํ•ด๋‹น pivot๊ฐ’๋ณด๋‹ค ์ž‘์€ ๊ฐ’์€ ์™ผ์ชฝ์œผ๋กœ ๋ชฐ์•„ ๋„ฃ๊ณ , ํฐ ๊ฐ’์€ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋ชฐ์•„๋„ฃ๋Š”๋‹ค. ์ด ๊ณผ์ •์„ ์žฌ๊ท€์ ์œผ๋กœ ๋ฐ˜๋ณตํ•˜๋ฉด, ๊ฐ ํŒŒํ‹ฐ์…˜๋งˆ๋‹ค O(n) ํƒ€์ž„์ด ๊ฑธ๋ฆฌ๊ณ , ์ด ํŒŒํ‹ฐ์…˜์€ ํ‰๊ท ์ ์œผ๋กœ O(logn) ํƒ€์ž„์ด ๊ฑธ๋ฆฌ๋ฏ€๋กœ, ์ด ์‹œ๊ฐ„์€ O(nlogn)์ด ๊ฑธ๋ฆฌ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์œ„ํ‚คํ”ผ๋””์•„์˜ ์„ค๋ช…์„ ์ฐธ๊ณ ํ•ด ๋ณด์ž. ํŒŒํ‹ฐ์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘๋™ํ•œ๋‹ค. ์ˆ˜๋„ ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด์ž. function par..

Data Structures, Algorithm 2019. 10. 1. 16:24
๋ณ‘ํ•ฉ ์ •๋ ฌ(Merge Sort) - ํŒŒ์ด์ฌ ์ฝ”๋“œ ๊ตฌํ˜„

Merge sort python code implementation merge sort ํŒŒ์ด์ฌ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด ๋ณด์ž. ๋ณ‘ํ•ฉ ์ •๋ ฌ(Merge Sort) ์œ„ํ‚คํ”ผ๋””์•„์˜ ์„ค๋ช…์„ ์ฐธ๊ณ ํ•ด ๋ณด์ž. ๋ณ‘ํ•ฉ ์ •๋ ฌ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘๋™ํ•œ๋‹ค. ๋ฆฌ์ŠคํŠธ์˜ ๊ธธ์ด๊ฐ€ 0 ๋˜๋Š” 1์ด๋ฉด ์ด๋ฏธ ์ •๋ ฌ๋œ ๊ฒƒ์œผ๋กœ ๋ณธ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋Š” ์ •๋ ฌ๋˜์ง€ ์•Š์€ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ ˆ๋ฐ˜์œผ๋กœ ์ž˜๋ผ ๋น„์Šทํ•œ ํฌ๊ธฐ์˜ ๋‘ ๋ถ€๋ถ„ ๋ฆฌ์ŠคํŠธ๋กœ ๋‚˜๋ˆˆ๋‹ค. ๊ฐ ๋ถ€๋ถ„ ๋ฆฌ์ŠคํŠธ๋ฅผ ์žฌ๊ท€์ ์œผ๋กœ ํ•ฉ๋ณ‘ ์ •๋ ฌ์„ ์ด์šฉํ•ด ์ •๋ ฌํ•œ๋‹ค. ๋‘ ๋ถ€๋ถ„ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋‹ค์‹œ ํ•˜๋‚˜์˜ ์ •๋ ฌ๋œ ๋ฆฌ์ŠคํŠธ๋กœ ํ•ฉ๋ณ‘ํ•œ๋‹ค. ๋ณ‘ํ•ฉ ์ •๋ ฌ์˜ ํ•ต์‹ฌ์€, ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š” ๋ฐฉ๋ฒ•๋ก ์„ ์‚ฌ์ด์ฆˆ๋ฅผ ๋ฐ˜์œผ๋กœ ์ชผ๊ฐ  ๋…€์„์— ์ ์šฉํ•ด์„œ ์ •๋ ฌ์„ ์™„๋ฃŒํ•œ ํ›„, ์ •๋ ฌ์ด ์™„๋ฃŒ๋œ ๋ฐ˜์ชฝ์งœ๋ฆฌ 2๊ฐœ๋ฅผ ๋‹ค์‹œ ํ•ฉ์นจ์œผ๋กœ์จ ์ •๋ ฌ์„ ๋งˆ์นœ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ฆ‰, merge_sortํ•จ์ˆ˜๋Š” 2๊ฐœ์˜ merge..

Data Structures, Algorithm 2019. 9. 19. 17:52
๋ฒ„๋ธ” ์ •๋ ฌ(Bubble Sort) - ํŒŒ์ด์ฌ ์ฝ”๋“œ ๊ตฌํ˜„

Bubble sort python code implementation. ๋ฒ„๋ธ” ์ •๋ ฌ์„ ํŒŒ์ด์ฌ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•ด ๋ณด์ž. ๋ฒ„๋ธ” ์ •๋ ฌ (Bubble Sort) ์œ„ํ‚คํ”ผ๋””์•„์˜ ์ •์˜๋ฅผ ์ฐธ๊ณ ํ•ด ๋ณด์ž. : ๊ฑฐํ’ˆ ์ •๋ ฌ(Bubble sort)์€ ๋‘ ์ธ์ ‘ํ•œ ์›์†Œ๋ฅผ ๊ฒ€์‚ฌํ•˜์—ฌ ์ •๋ ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ O(n^2)์œผ๋กœ ์ƒ๋‹นํžˆ ๋Š๋ฆฌ์ง€๋งŒ, ์ฝ”๋“œ๊ฐ€ ๋‹จ์ˆœํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ž์ฃผ ์‚ฌ์šฉ๋œ๋‹ค. ์›์†Œ์˜ ์ด๋™์ด ๊ฑฐํ’ˆ์ด ์ˆ˜๋ฉด์œผ๋กœ ์˜ฌ๋ผ์˜ค๋Š” ๋“ฏํ•œ ๋ชจ์Šต์„ ๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์— ์ง€์–ด์ง„ ์ด๋ฆ„์ด๋‹ค. ์˜ˆ์‹œ๋ฅผ ํ†ตํ•ด ๋ฒ„๋ธ” ์ •๋ ฌ์ด ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ์•Œ์•„๋ณด์ž. ๋ฒ„๋ธ” ์ •๋ ฌ์€ ๋งค์šฐ ๋‹จ์ˆœํ•œ๋ฐ, ๊ทธ๋ƒฅ ์ฒ˜์Œ๋ถ€ํ„ฐ 2๊ฐœ์”ฉ ์ง์„ ์ง€์–ด ๊ฐ’์„ ๋น„๊ตํ•œ ํ›„, ์ž‘์€ ๋…€์„์€ ์•ž์œผ๋กœ, ํฐ ๋…€์„์€ ๋’ค๋กœ ๋ณด๋‚ด๋ฉด ๋œ๋‹ค. (55, 07)์€ (07, 55)๋กœ, (55, 78)์€ ๊ทธ๋Œ€๋กœ, (78, 12)๋Š” (12..

Data Structures, Algorithm 2019. 9. 19. 15:59
์‚ฝ์ž… ์ •๋ ฌ(Insertion Sort) - ํŒŒ์ด์ฌ ์ฝ”๋“œ ๊ตฌํ˜„

Insertion sort python code implemetation ์‚ฝ์ž… ์ •๋ ฌ์„ ํŒŒ์ด์ฌ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•ด ๋ณด์ž. ์‚ฝ์ž… ์ •๋ ฌ (Insertion sort) ์œ„ํ‚คํ”ผ๋””์•„์— ๋‚˜์˜จ ์ •์˜๋ฅผ ์ฐธ๊ณ ํ•ด ๋ณด์ž. ์„ ํƒ ์ •๋ ฌ(้ธๆ“‡ๆ•ดๅˆ—, selection sort)์€ ์ œ์ž๋ฆฌ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํ•˜๋‚˜๋กœ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ˆœ์„œ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค. ์ฃผ์–ด์ง„ ๋ฆฌ์ŠคํŠธ ์ค‘์— ์ตœ์†Œ๊ฐ’์„ ์ฐพ๋Š”๋‹ค. ๊ทธ ๊ฐ’์„ ๋งจ ์•ž์— ์œ„์น˜ํ•œ ๊ฐ’๊ณผ ๊ต์ฒดํ•œ๋‹ค(ํŒจ์Šค(pass)). ๋งจ ์ฒ˜์Œ ์œ„์น˜๋ฅผ ๋บ€ ๋‚˜๋จธ์ง€ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ต์ฒดํ•œ๋‹ค. ๋น„๊ตํ•˜๋Š” ๊ฒƒ์ด ์ƒ์ˆ˜ ์‹œ๊ฐ„์— ์ด๋ฃจ์–ด์ง„๋‹ค๋Š” ๊ฐ€์ • ์•„๋ž˜, n๊ฐœ์˜ ์ฃผ์–ด์ง„ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ด์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ •๋ ฌํ•˜๋Š” ๋ฐ์—๋Š” Θ(n^2) ๋งŒํผ์˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ๋‹ค. ์„ ํƒ ์ •๋ ฌ์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋‹จ์ˆœํ•˜๋ฉฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ œํ•œ์ ์ธ ๊ฒฝ์šฐ์— ์‚ฌ์šฉ์‹œ ์„ฑ๋Šฅ ์ƒ์˜ ์ด์ ์ด..

Data Structures, Algorithm 2019. 9. 19. 15:51
์„ ํƒ์ •๋ ฌ(Selection Sort) - ํŒŒ์ด์ฌ ์ฝ”๋“œ ๊ตฌํ˜„

selection sort python code ์„ ํƒ์ •๋ ฌ์„ ํŒŒ์ด์ฌ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•ด ๋ณด์ž. ์„ ํƒ์ •๋ ฌ(Selection sort ๊ธฐ๋ณธ ์„ค๋ช…) ์œ„ํ‚คํ”ผ๋””์•„์— ์žˆ๋Š” ์ •์˜๋ฅผ ์ฐธ๊ณ ํ•ด ๋ณด์ž. ์„ ํƒ ์ •๋ ฌ(้ธๆ“‡ๆ•ดๅˆ—, selection sort)์€ ์ œ์ž๋ฆฌ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํ•˜๋‚˜๋กœ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ˆœ์„œ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค. ์ฃผ์–ด์ง„ ๋ฆฌ์ŠคํŠธ ์ค‘์— ์ตœ์†Œ๊ฐ’์„ ์ฐพ๋Š”๋‹ค. ๊ทธ ๊ฐ’์„ ๋งจ ์•ž์— ์œ„์น˜ํ•œ ๊ฐ’๊ณผ ๊ต์ฒดํ•œ๋‹ค(ํŒจ์Šค(pass)). ๋งจ ์ฒ˜์Œ ์œ„์น˜๋ฅผ ๋บ€ ๋‚˜๋จธ์ง€ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ต์ฒดํ•œ๋‹ค. ๋น„๊ตํ•˜๋Š” ๊ฒƒ์ด ์ƒ์ˆ˜ ์‹œ๊ฐ„์— ์ด๋ฃจ์–ด์ง„๋‹ค๋Š” ๊ฐ€์ • ์•„๋ž˜, n๊ฐœ์˜ ์ฃผ์–ด์ง„ ๋ฆฌ์ŠคํŠธ๋ฅผ ์ด์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ •๋ ฌํ•˜๋Š” ๋ฐ์—๋Š” Θ(n^2) ๋งŒํผ์˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ๋‹ค. ์„ ํƒ ์ •๋ ฌ์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋‹จ์ˆœํ•˜๋ฉฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ œํ•œ์ ์ธ ๊ฒฝ์šฐ์— ์‚ฌ์šฉ์‹œ ์„ฑ๋Šฅ ์ƒ์˜ ์ด์ ์ด ์žˆ๋‹ค. ๊ทธ๋ฆผ์œผ๋กœ ํ‘œ..

Data Structures, Algorithm 2019. 9. 19. 15:42
OCaml ๊ธฐ์ดˆ - OCaml ํƒ€์ž…, ํ•จ์ˆ˜

OCaml ์–ธ์–ด : Ocaml์€ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์‚ฌ์šฉ๋ฒ•์„ ๊ฐ€์ง€๋Š” ์ƒ์œ„ (high-level)์–ธ์–ด์ด๋‹ค. ์ ˆ์ฐจํ˜•(imperative), ๊ฐ์ฒด์ง€ํ–ฅ(object oriented), ํ•จ์ˆ˜ํ˜•(functional) ๋“ฑ์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๋ชจ๋‘ ์ง€์›ํ•œ๋‹ค. Java์ฒ˜๋Ÿผ, ์ž๋™์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•ด ์ฃผ๋Š” Garbage collector๊ฐ€ ์กด์žฌํ•œ๋‹ค. ํƒ€์ž… ์‹œ์Šคํ…œ์ด ๋‚ด์žฅ๋˜์–ด ๋งค์šฐ ์•ˆ์ •์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ ˆ์ฐจํ˜• VS ๊ฐ’ ์ค‘์‹ฌํ˜• ์ ˆ์ฐจํ˜• ์–ธ์–ด๋Š” ๊ธฐ๊ฒŒ์—๊ฒŒ ์ˆœ์„œ๋Œ€๋กœ ๋ช…๋ น์„ ์ „๋‹ฌํ•œ๋‹ค. ํ•จ์ˆ˜ํ˜• ์–ธ์–ด์˜ ๊ฒฝ์šฐ, ๊ฐ’ ์ค‘์‹ฌ์œผ๋กœ ๊ธฐ๊ณ„์—๊ฒŒ ์‹์˜ ๊ณ„์‚ฐ์„ ์‹œํ‚ค๋Š” ์‹์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค. OCaml ๊ธฐ์ดˆ - ๊ฐ’ ์ •์˜ ์ •์ˆ˜ ๊ฐ’ let i = 1 ๋ฌธ์ž์—ด ๊ฐ’ let s = "hello world" Boolean ๊ฐ’ let b = true unit let _ = print_e..

Tutorials/Ocaml 2019. 9. 16. 20:33