๋ฐ๋ธŒ์ฝ”์Šค_๋ฐ์ดํ„ฐ์—”์ง€๋‹ˆ์–ด๋ง 25

[Week2 ์ž๋ฃŒ๊ตฌ์กฐ/์•Œ๊ณ ๋ฆฌ์ฆ˜] TIL 5์ผ์ฐจ - ์ž๋ฃŒ๊ตฌ์กฐ/์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ ์šฉํ•˜๊ธฐ

๊ทธ๋™์•ˆ ๋ฐฐ์› ๋˜ ์ž๋ฃŒ๊ตฌ์กฐ๋“ค์„ ์ด์ œ ๋ฌธ์ œ์— ์ ์šฉํ•ด ๋ณด์ž. 1) ํ•ด์‹œ [programmers-Lv1] ์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์„ ์ˆ˜ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”. programmers.co.kr ๋ฌธ์ œ ๊ฐœ์š” ๋งˆ๋ผํ†ค ๊ฒฝ๊ธฐ์— ์ฐธ์—ฌํ•œ ์‚ฌ๋žŒ๊ณผ ์™„์ฃผํ•œ ์„ ์ˆ˜์˜ ๋ช…๋‹จ์ด ์ฃผ์–ด์งˆ ๋•Œ, ์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์„ ์ˆ˜์˜ ์ด๋ฆ„์„ ๋ฐ˜ํ™˜ํ•ด๋ผ.(์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์„ ์ˆ˜๋Š” 1๋ช…์ด๋‹ค) ํ’€์ด ์„ ์ˆ˜์˜ ์ด๋ฆ„์„ key๋กœ ์„ ์ˆ˜์˜ ์ˆซ์ž๋ฅผ value๋กœ ํ•˜๋Š” dict๋ฅผ ๋งŒ๋“ค์–ด ์ €์žฅ(๋™๋ช…์ด์ธ์ด ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ) ์™„์ฃผ ๋ช…๋‹จ์˜ ์ด๋ฆ„์ด ๋‚˜์˜ค๋ฉด ํ•ด๋‹น dict[key]๊ฐ’์„ 1 ๊ฐ์†Œ ๊ฐ’์ด 0์ด ์•„๋‹Œ key ๊ฐ’์„ ๋ฐ˜ํ™˜(=์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์„ ์ˆ˜์ด๋‹ค) def solu..

[Week2 ์ž๋ฃŒ๊ตฌ์กฐ/์•Œ๊ณ ๋ฆฌ์ฆ˜] TIL 4์ผ์ฐจ - ํž™๊ณผ ์ถ”๊ฐ€๋ฌธ์ œ

1) ํž™(Heap) ํž™์€ ์™„์ „ ์ด์ง„ํŠธ๋ฆฌ ์ค‘ ํ•˜๋‚˜๋กœ ๋ฃจํŠธ ๋…ธ๋“œ๊ฐ€ ์ „์ฒด ํŠธ๋ฆฌ์˜ ์ตœ์†Ÿ๊ฐ’(=์ตœ์†Ÿ๊ฐ’ ํž™)์ด๋‚˜ ์ตœ๋Œ“๊ฐ’(=์ตœ๋Œ“๊ฐ’ ํž™)์„ ๊ฐ–๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ์–ด๋–ค ๋…ธ๋“œ์—์„œ๋„ ์™ผ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ, ์˜ค๋ฅธ์ชฝ ์„œ๋ธŒํŠธ๋ฆฌ๋„ ๋ชจ๋‘ ์ตœ์†Œ ํ˜น์€ ์ตœ๋Œ€ ํž™์ด์—ฌ์•ผ ํ•˜๋ฏ€๋กœ ์žฌ๊ท€์ ์œผ๋กœ ์ •์˜ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ €๋ฒˆ ์‹œ๊ฐ„์— ๋ฐฐ์› ๋˜ ์ด์ง„ ํƒ์ƒ‰ ํŠธ๋ฆฌ์™€ ๋น„๊ตํ•ด ๋ณด๋ฉด ํ‚ค์˜ ํฌ๊ธฐ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜์–ด ์žˆ์ง€ ์•Š๊ณ  ์ด ๋•Œ๋ฌธ์— ๋น ๋ฅธ ํƒ์ƒ‰๋„ ์–ด๋ ค์šฐ๋ฉฐ ์™„์ „์ด์ง„ํŠธ๋ฆฌ์ด๊ธฐ ๋•Œ๋ฌธ์— ์‚ฝ์ž…, ์‚ญ์ œ๊ฐ€ ๋งˆ์ง€๋ง‰ ๋…ธ๋“œ์—์„œ ์ด๋ฃจ์–ด์ ธ์•ผ ํ•œ๋‹ค. ์ž๋ฃŒ๊ตฌ์กฐ์˜ ํ•ด๋‹น ํŠน์„ฑ์—์„œ ๋น„๋กฏํ•˜์—ฌ ์ •์˜๋˜๋Š” ํ•จ์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. insert(item) : item์„ ๋งˆ์ง€๋ง‰ ๋…ธ๋“œ์— ์‚ฝ์ž…ํ•œ๋’ค, ๋ฃจํŠธ ๋…ธ๋“œ์™€์˜ ํฌ๊ธฐ๋น„๊ต๋ฅผ ํ†ตํ•ด ์ ์ ˆํ•œ ์œ„์น˜๋ฅผ ์ฐพ์•„๋‚˜๊ฐ„๋‹ค. remove() : ๋ฃจํŠธ ๋…ธ๋“œ๋ฅผ ์‚ญ์ œํ•œ ๋’ค, ์•Œ๋งž์€ ๋…ธ๋“œ๋ฅผ ํ•ด๋‹น ์ž๋ฆฌ๋กœ ์ด๋™์‹œ..

[Week2 ์ž๋ฃŒ๊ตฌ์กฐ/์•Œ๊ณ ๋ฆฌ์ฆ˜] TIL 3์ผ์ฐจ - ์Šคํƒ๊ณผ ํ, ํŠธ๋ฆฌ

๋”๋ณด๊ธฐ TIL์„ ์“ฐ๋Š”๋ฐ ๋„ˆ๋ฌด ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์—, ๋งค์ผ ๊ธฐ๋กํ•˜๊ธฐ ์œ„ํ•ด์„ , ์กฐ๊ธˆ ๋‹จ์ˆœํ™”ํ•˜๊ธฐ๋กœ ํ•˜์˜€๋‹ค. ์Šคํƒ๊ณผ ํ์˜ ๊ฐœ๋…์— ๋Œ€ํ•ด์„œ๋Š” ๊ธฐ์กด์˜ ๊ธ€์„ ์ฐธ๊ณ ํ•˜์ž. [ํŒŒ์ด์ฌ ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ] 1. ์Šคํƒ๊ณผ ํ * ์ด ๊ธ€์€ ๋„ค์ด๋ฒ„ ๋ถ€์ŠคํŠธ ์ฝ”์Šค์˜ ์ธ๊ณต์ง€๋Šฅ(AI) ๊ธฐ์ดˆ ๋‹ค์ง€๊ธฐ ๊ฐ•์˜๋ฅผ ์ˆ˜๊ฐ•ํ•˜๋ฉฐ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ์‚ฌ๋‹ด) ์–ผ๋งˆ์ „ ์ธํ„ด ๋ชจ์˜๋ฉด์ ‘์— ์šฐ์—ฐํžˆ ์ฐธ์—ฌํ•  ๊ธฐํšŒ๊ฐ€ ์ƒ๊ฒผ๋Š”๋ฐ ์Šคํƒ๊ณผ ํ๋ฅผ ํ—ท๊ฐˆ๋ ค๋ฒ„๋ ธ๋‹ค. ํ”„๋กœ์  steady-eschoi.tistory.com 1) ์Šคํƒ ํ›„์œ„ํ‘œ๊ธฐ๋ฒ• ํ›„์œ„ํ‘œ๊ธฐ๋ฒ•์€ ๋Œ€ํ‘œ์ ์œผ๋กœ ์Šคํƒ์„ ํ™œ์šฉํ•˜์—ฌ ํ‘ธ๋Š” ๋ฌธ์ œ์ด๋‹ค. ์ค‘์œ„ ํ‘œ๊ธฐ๋ฒ•(infix notation) : ์—ฐ์‚ฐ์ž๊ฐ€ ํ”ผ์—ฐ์‚ฐ์ž๋“ค ์‚ฌ์ด์— ์œ„์น˜ (A+B)*(C-D) ํ›„์œ„ ํ‘œ๊ธฐ๋ฒ•(postfix notation) : ์—ฐ์‚ฐ์ž๊ฐ€ ํ”ผ์—ฐ์‚ฐ์ž๋“ค ๋’ค์— ์œ„์น˜ AB+CD-* :..

[Week2 ์ž๋ฃŒ๊ตฌ์กฐ/์•Œ๊ณ ๋ฆฌ์ฆ˜] TIL 2์ผ์ฐจ - ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ

0) ์ถ”์ƒ์  ์ž๋ฃŒ๊ตฌ์กฐ(ADT) ์ž๋ฃŒ๊ตฌ์กฐ์˜ ๋‚ด๋ถ€๊ตฌํ˜„์€ ์ œ๊ณตํ•˜์ง€ ์•Š๊ณ , ๋ฐ์ดํ„ฐ์˜ ํ˜•ํƒœ๋ฅผ ์„ ์–ธํ•˜๊ณ  ๊ธฐ๋Šฅ(์—ฐ์‚ฐ)์„ ์ •์˜ํ•˜๋Š” ๊ฒƒ 1) ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋ž€? ๋…ธ๋“œ์™€ ๋…ธ๋“œ๊ฐ€ ์—ฐ๊ฒฐ๋œ ํ˜•ํƒœ์ด๋‹ค. ๋…ธ๋“œ๋Š” ๊ฐ’์„ ๋‹ด๋Š” ๋ถ€๋ถ„๊ณผ ์ฃผ์†Œ๋ฅผ ๋‹ด๋Š” ๋ถ€๋ถ„์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค. ์ผ๋ฐ˜ ๋ฆฌ์ŠคํŠธ์— ๋น„ํ•ด ๊ฐ’์„ ์ ‘๊ทผํ•˜๋Š” ๋ฐ๋Š” ์˜ค๋ž˜ ๊ฑธ๋ฆฌ์ง€๋งŒ(์‹œ๊ฐ„๋ณต์žก๋„ : O(1) vs O(n)), ๋ฐ์ดํ„ฐ๋ฅผ ์ž์œ ๋กญ๊ฒŒ ์‚ฝ์ž… ์‚ญ์ œ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค. ์˜ค๋Š˜ ์‚ดํŽด๋ณผ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋Š” ๊ธฐ๋ณธ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ, head๊ฐ€ ๋”๋ฏธ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ, ์–‘๋ฐฉํ–ฅ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์ด๋‹ค. ๐Ÿฅ„๊ธฐ๋ณธ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋Š” ๋…ธ๋“œ๊ฐ€ ์—ฐ๊ฒฐ๋œ ํ˜•ํƒœ์ด๋ฉฐ, head, tail, nodeCount๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. Head : ์ œ์ผ ์•ž ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ Tail : ์ œ์ผ ๋’ท ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ nodeCount :..

[Week2 ์ž๋ฃŒ๊ตฌ์กฐ/์•Œ๊ณ ๋ฆฌ์ฆ˜] TIL 1์ผ์ฐจ - ๋ฆฌ์ŠคํŠธ

์ž๋ฃŒ๊ตฌ์กฐ์˜ ํ•„์š”์„ฑ ์ƒํ™ฉ์— ์•Œ๋งž์€ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์„ ํƒํ•˜๋ฉด, ์‹œ๊ฐ„ ๋‹จ์ถ•์˜ ์ด์ ์„ ์–ป์„ ์ˆ˜ ์žˆ์Œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ž๋ฃŒ๊ตฌ์กฐ์™€ ์—ฐ์‚ฐ์„ ์•Œ๋งž๊ฒŒ ์„ ํƒํ•˜๋Š” ๊ฒƒ 0) ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ณต์žก๋„ ์‹œ๊ฐ„, ๊ณต๊ฐ„ ์ž์›์„ ์–ผ๋งˆ๋‚˜ ํ•„์š”๋กœ ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ - ์„ ํ˜• ์‹œ๊ฐ„ ๋ณต์žก๋„ O(${n}$) - ๋กœ๊ทธ ์‹œ๊ฐ„ ๋ณต์žก๋„ O(${log n}$) ex) ์ •๋ ฌ๋œ ์ˆ˜๋ชฉ๋ก์—์„œ ํŠน์ •๊ฐ’์„ ์ฐพ๊ธฐ ์œ„ํ•ด ์ด์ง„ํŠธ๋ฆฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉ - ์ด์ฐจ ์‹œ๊ฐ„ ๋ณต์žก๋„ O(${n^2}$) ex) ์‚ฝ์ž…์ •๋ ฌ cf) ๊ฐ€์žฅ ์ ์€ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ–๋Š” ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ : ๋ณ‘ํ•ฉ์ •๋ ฌ (divide and conquer) ๋‚˜๋ˆŒ ๋•Œ O(${log_n}$) * ํ•ฉ์น  ๋•Œ O(${n}$) ex) ๋ฐฐ๋‚ญ๋ฌธ์ œ 1) ์„ ํ˜•๋ฐฐ์—ด (List) ์—ฐ์‚ฐ - ์›์†Œ ์ถ”๊ฐ€ L.append(value) - ์›์†Œ ์‚ญ์ œ del(L[index..

728x90