๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋ก๐Ÿง Algorithm/โšกver.0 (7)

C-log

๐Ÿฆ Cell Algorithm : Tree

์Šคํƒ๊ณผ ํ๋ฅผ ๊ณต๋ถ€ํ•˜๋‹ค๊ฐ€ Tree๋กœ ๋„˜์–ด์˜ค๊ฒŒ ๋œ ์ด์œ ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐ•์˜๋“ค์„ ์ฒญ๊ฐ•๋งŒ ์—ฌ๋Ÿฟ ํ•ด๋ณด๋‹ค ๋ณด๋‹ˆ ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋„๋‹ฌํ•˜๋Š” ๊ฐœ๋…๊ณผ ์‹ค์ œ ํ”„๋กœ์ ํŠธ๋‚˜ ์‹ค๋ฌด์—์„œ ๊ฐ€์žฅ ํ”ํ•˜๊ฒŒ ์ ‘ํ•˜๋Š” ๊ฐœ๋…์ด ๋ฐ”๋กœ Tree๋ผ๋Š” ๊ฒƒ์„ ๋Š๋ผ๊ณ  ๋ฅ์„ Tree ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋จผ์ € ํฌ์ŠคํŒ…ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ๋ฌผ๋ก  ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ์™€ ๊ฐ™์€ ๊ฐœ๋…๋“ค์„ ์ˆœ์ฐจ์ ์œผ๋กœ ๋ฐฐ์›Œ๊ฐ€๋ฉด ์ข‹๊ฒ ์ง€๋งŒ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํฐ ๊ฐœ๋… ๋ถ€ํ„ฐ ์ž‘์€ ๊ฐœ๋…์œผ๋กœ ์ชผ๊ฐœ์ง€๋ฉด์„œ ๋ฐฐ์›Œ ๋‚˜๊ฐ€๋Š” ๊ฒƒ์ด ๋‚˜์—๊ฒŒ ๋งž๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด๋“ค์–ด์„œ ๊ณต๋ถ€ ์ˆœ์„œ๋ฅผ ๋’ค์ง‘์—ˆ๋‹ค. Tree๋ฅผ ๊ณต๋ถ€ํ•˜๊ณ  ๋‚˜๋ฉด BFS์™€ DFS๋ฅผ ๋ฐฐ์šธ ๊ฒƒ์ด๋‹ค.TreeํŠธ๋ฆฌ๋Š” ๋…ธ๋“œ์™€ ์—ฃ์ง€๋กœ ์—ฐ๊ฒฐ๋œ ๊ทธ๋ž˜ํ”„์˜ ํŠน์ˆ˜ํ•œ ํ˜•ํƒœ๋กœ, ์ฃผ์š” ํŠน์ง•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ์ฆ‰, ๊ทธ๋ž˜ํ”„์˜ ํ‘œํ˜„์œผ๋กœ๋„ tree๋ฅผ ํ‘œํ˜„ ํ•  ์ˆ˜ ์žˆ๋‹ค. (๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” Tree๋ฅผ ์•Œ๊ธฐ ์œ„ํ•ด์„œ ๊ทธ๋ž˜ํ”„๋ฅผ ์•Œ์•„์•ผ ํ•œ๋‹ค.)ํŠธ๋ฆฌ์˜ ํŠน์ง•..

๐Ÿฆ Cell Algorithm : ์Šคํƒ๊ณผ ํ

์Šคํƒ๊ณผ ํ๋Š” ๋ฆฌ์ŠคํŠธ์—์„œ ์กฐ๊ธˆ ๋” ๋ฐœ์ „ํ•œ ํ˜•ํƒœ์˜ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ์Šคํƒ๊ณผ ํ์˜ ๊ตฌ์กฐ๋Š” ๋น„์Šทํ•˜์ง€๋งŒ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์€ ๋‹ค๋ฅด๋‹ค. ์Šคํƒ ํ›„์ž…์„ ์ถœ(LIFO) ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ์‚ฌ์ž…๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ๋‚˜์˜ค๋Š” ๊ตฌ์กฐ ์Šคํƒ์˜ ์œ„์น˜๋Š” top์ด๋ผ๋Š” ๊ฐœ๋…์ด ์žˆ๋‹ค. ์žฌ๊ท€ ํ•จ์ˆ˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์›๋ฆฌ์™€ ์ผ๋งฅ์ƒํ†ตํ•˜๋‹ค. ์Šคํƒ์— ์‚ฌ์šฉ๋˜๋Š” ์ฝ”๋“œ ์œ„์น˜ top : ์Šคํƒ์—์„œ ๊ฐ€์žฅ ์œ„์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๋ฆฌ๋Š” ์˜์—ญ์ด๋‹ค. s.append(data) : top์˜ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž… s.pop() : top์œ„์น˜์— ํ˜„์žฌ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๊ณ  ํ™•์ธํ•˜๋Š” ์—ฐ์‚ฐ s[-1] : top์œ„์น˜์— ํ˜„์žฌ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‹จ์ˆœ ํ™•์ธํ•˜๋Š” ์—ฐ์‚ฐ ์Šคํƒ์„ ์ด์šฉํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์šฐ์„  ํƒ์ƒ‰ ๋ฐฑํŠธ๋ž˜ํ‚น ์ข…๋ฅ˜์˜ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ์— ํšจ๊ณผ์ ์ด๋ฏ€๋กœ ๋ฐ˜๋“œ์‹œ ์•Œ์•„๋‘์–ด์•ผ ํ•œ๋‹ค. ๋ฐฑํŠธ๋ž˜ํ‚น ์ข…๋ฅ˜์˜ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ์— ํšจ๊ณผ์ ์ด๋ฏ€๋กœ ๋ฐ˜๋“œ์‹œ ..

๐Ÿฆ โœจCell Algorithm : ๊ตฌ๊ฐ„์˜ ํ•ฉ

๊ตฌ๊ฐ„ ํ•ฉ์€ ํ•ฉ ๋ฐฐ์—ด์„ ์ด์šฉํ•˜์—ฌ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๋” ์ค„์ด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ํŠน์ˆ˜ํ•œ ๋ชฉ์ ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ๊ตฌ๊ฐ„ ํ•ฉ์˜ ํ•ต์‹ฌ ํ•ฉ ๋ฐฐ์—ด์€ ๊ธฐ์กด์˜ ๋ฐฐ์—ด์„ ์ „์ฒ˜๋ฆฌ(๊ฐ€๊ณต)ํ•œ ๋ฐฐ์—ด์ด๋ผ ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. ex) [1, 2, 3, 4, 5] - (ํ•ฉ ๋ฐฐ์—ด) -> [1, 3, 6, 10, 15] ex) [1, 2, 3, 4, 5] - (๊ตฌ๊ฐ„์˜ ํ•ฉ/2~4๊นŒ์ง€) -> 3+4+5 = 12 ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(N)์ด๋‹ค. ํ•ฉ ๋ฐฐ์—ด๊ณผ ๊ตฌ๊ฐ„ ํ•ฉ ๊ณต์‹์„ ์ „์žฌ์ ์†Œ์— ํ™œ์šฉํ•˜๋ฉด ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ์—์„œ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ์ค„์ด๋Š” ๋ฐ ๋งŽ์€ ๋„์›€์ด ๋  ๊ฒƒ์ด๋‹ค. ๊ผญ ์›๋ฆฌ๋ฅผ ์ดํ•ดํ•ด์•ผํ•œ๋‹ค. * ๋ˆ„์ ์˜ ํ•ฉ ๊ตฌ๊ฐ„์˜ ํ•ฉ๊ด€๋ จ ๋ฌธ์ œ๋“ค์„ ์‹ค๋ฒ„ 3~1์ •๋„์ด๋‹ค. ๋”ฐ๋ผ์„œ ๋ˆ„์ ์˜ ํ•ฉ ์˜ˆ์‹œ๋ฅผ ๋ด์•ผ ์กฐ๊ธˆ ๋” ์ดํ•ด๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค. O(N)์ธ ๋ˆ„์ ์˜ ํ•ฉ์„ ํ•˜๊ธฐ ์ด์ „์— ์•„๋ž˜๋Š” O(N^2)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„..

๐Ÿฆ Cell Algorithm : ๋ฐฐ์—ด๊ณผ ๋ฆฌ์ŠคํŠธ

ํŒŒ์ด์ฌ์—์„œ๋Š” ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋ฐฐ์—ด์˜ ํŠน์„ฑ๋„ ํ•จ๊ป˜ ๋‚ดํฌํ•˜๊ณ  ์žˆ์–ด ํฌ๊ฒŒ ๊ตฌ๋ถ„ํ•˜์—ฌ ์‚ฌ์šฉํ•˜์ง€ ์•Š์ง€๋งŒ ๋ฐฐ์—ด์ด๋ž€ ๊ฐœ๋…๊ณผ ๋ฆฌ์ŠคํŠธ๋ผ๋Š” ๊ฐœ๋…์€ ๋‹ค๋ฅด๋‹ค. * ์ž๋ฃŒ๊ตฌ์กฐ์˜ ๋ฐฐ์—ด์€ ๋ฉ”๋ชจ๋ฆฌ ์—ฐ์† ๊ณต๊ฐ„์— ๊ฐ’์ด ์ฑ„์›Œ์ ธ ์žˆ๋Š” ํ˜•ํƒœ์ด๋‹ค. ๊ฐ’์€ ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฐฐ์—ด์˜ ํŠน์ง• ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’์— ๋ฐ”๋กœ ์ ‘๊ทผ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ƒˆ๋กœ์šด ๊ฐ’์„ ์‚ฝ์ž…ํ•˜๊ฑฐ๋‚˜ ํŠน์ • ์ธ๋ฑ์Šค์— ์žˆ๋Š” ๊ฐ’์„ ์‚ญ์ œํ•˜๊ธฐ ์–ด๋ ต๋‹ค. ๊ฐ’์„ ์‚ฝ์ž…ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋ ค๋ฉด ํ•ด๋‹น ์ธ๋ฑ์Šค ์ฃผ๋ฒผ์— ์žˆ๋Š” ๊ฐ’์„ ์ด๋™์‹œํ‚ค๊ฑฐ๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค. ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋Š” ์„ ์–ธํ•  ๋•Œ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ•œ ๋ฒˆ ์„ ์–ธํ•˜๋ฉด ํฌ๊ธฐ๋ฅผ ๋Š˜๋ฆฌ๊ฑฐ๋‚˜ ์ค„์ผ ์ˆ˜ ์—†๋‹ค. ๊ตฌ์กฐ๊ฐ€ ๊ฐ„๋‹จํ•˜๋ฏ€๋กœ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ์— ๋งŽ์ด ์“ฐ์ธ๋‹ค. * ๋ฆฌ์ŠคํŠธ๋Š” ๊ฐ’๊ณผ ํฌ์ธํ„ฐ๋ฅผ ๋ฌถ์€ ๋…ธ๋“œ๋ผ๋Š” ๊ฒƒ์„ ํฌ์ธํ„ฐ๋กœ ์—ฐ๊ฒฐํ•œ ์ž๋ฃŒ์ฃผ๊ณ  ์ด๋‹ค. ๋ฆฌ์ŠคํŠธ์˜ ํŠน์ง• ์ธ๋ฑ์Šค๊ฐ€ ์—†์œผ๋ฏ€๋กœ ๊ฐ’์— ์ ‘๊ทผํ•˜..

Cell Algorithm : ์‹œ์ž‘ํ•˜๊ธฐ ์•ž์„œ

Cell Algorithm์˜ Cell์€ ์„ธํฌ๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ ์ธ๋ฅ˜์˜ ์‹œ์ž‘์ด์ž ํƒœ์ดˆ์ด๋‹ค. ์„ธํฌ๋ถ€ํ„ฐ ํƒ„์ƒ์‹œํ‚ค๊ฒ ๋‹จ ์˜๋ฏธ๋กœ ๊ฐœ๋…์„ ์ž˜ ๋‹ค์ง€์ž๋Š” ์ทจ์ง€๋กœ ์ง€์–ด์กŒ๋‹ค. Cell Algorithm์€ 'Do it! ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ with Python'๊ฐ•์˜์— ์˜์กดํ•˜๊ณ  ์žˆ๋‹ค. ์•„๋ž˜ ๋งํฌ๋ฅผ ํ†ตํ•ด ๊ฐ•์˜๋ฅผ ๋“ค์„ ์ˆ˜ ์žˆ๋‹ค. [์ง€๊ธˆ ๋ฌด๋ฃŒ] Do it! ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ with Python ๊ฐ•์˜ - ์ธํ”„๋Ÿฐ IT๊ธฐ์—… ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋Œ€๋น„๋ฅผ ์œ„ํ•œ [์ž๋ฃŒ๊ตฌ์กฐ ๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ•ต์‹ฌ์ด๋ก  & ๊ด€๋ จ ์‹ค์ „ ๋ฌธ์ œ ํ’€์ด ๊ฐ•์˜] ์ž…๋‹ˆ๋‹ค. - Python ํŽธ -, [์‚ฌ์ง„] ๐Ÿ’ป ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํ•ต์‹ฌ,ํŒŒ์ด์ฌ์œผ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ•™์Šต www.inflearn.com GitHub - eric98040/Do-It-Algorithm-Coding-Test: A stu..