๊นจ์•Œ ๊ฐœ๋… ๐Ÿ“‘/์•Œ๊ณ ๋ฆฌ์ฆ˜ 14

๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜ (Greedy Algorithm)

#1 ์•Œ๊ณ ๋ฆฌ์ฆ˜#1-1 ๊ฐœ์š”while(๋ฌธ์ œ ํ•ด๊ฒฐ ์•ˆ ๋จ) { ํ˜„ ์‹œ์  ๊ฐ€์žฅ ์ข‹์•„ ๋ณด์ด๋Š” ์„ ํƒ}๋ˆˆ ์•ž์˜ ์ด์ต๋งŒ ์ถ”๊ตฌ(= Greedy(ํƒ์š•์Šค๋Ÿฌ์šด, ์š•์‹ฌ ๋งŽ์€))ํ•˜๋Š” ๋ฐฉ์‹์˜ ์ ‘๊ทผ๋ฒ•์„ ๋งํ•œ๋‹ค. ์œ„ ์ฝ”๋“œ์˜ ํ˜•์‹์„ ๊ฐ–์ถ”๊ธฐ๋งŒ ํ•˜๋ฉด ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ผ ๋ถ€๋ฅผ ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰ ๊ตฌ์ฒด์„ฑ์ด ๋‚ฎ์€, ์ถ”์ƒ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. #1-2 ์ตœ์ ํ•ด(ๆœ€้ฉ่งฃ, optimal solution)์ฃผ์–ด์ง„ ๋ฌธ์ œ๋ฅผ ๊ฐ€์žฅ ํšจ๊ณผ์ ์œผ๋กœ ํ•ด๊ฒฐํ•˜๋Š” ์ตœ์ƒ์˜ ๋‹ต ๋˜๋Š” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์˜๋ฏธํ•œ๋‹ค. #1-3 Yes/No ๋ฌธ์ œ์™€ ์ตœ์ ํ™” ๋ฌธ์ œ์˜ˆ๋ฅผ ๋“ค์–ด, "์–ด๋–ค ์กฐ๊ฑด A๋ฅผ ๋งŒ์กฑํ•˜๋Š” ์›์†Œ B๊ฐ€ ์ง‘ํ•ฉ C์— ์กด์žฌํ•˜๋Š”๊ฐ€?"๋ผ๊ณ  ๋ฌป๋Š” ๋ฌธ์ œ๋ฅผ Yes/No ๋ฌธ์ œ๋ผ๊ณ  ํ•œ๋‹ค. ๋ฐ˜๋ฉด "์–ด๋–ค ์กฐ๊ฑด A๋ฅผ ๋งŒ์กฑํ•˜๋Š” ์›์†Œ B์˜ ์ตœ์†Ÿใ†์ตœ๋Œ“๊ฐ’์€ ์–ผ๋งˆ์ธ๊ฐ€?"๋ผ๊ณ  ๋ฌป๋Š” ๋ฌธ์ œ ์ฆ‰, "์ตœ์ ํ•ด๋Š” ์–ผ๋งˆ์ธ๊ฐ€?"๋ผ๊ณ  ๋ฌป..

๊ทธ๋ž˜ํ”„ - ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰ (DFS, Depth-First Search)

#1 ๊ทธ๋ž˜ํ”„์˜ ํƒ์ƒ‰ ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰ - ์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „. ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰ ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰์˜ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์˜ˆ์‹œ ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰( - ๅ„ชๅ…ˆๆŽข็ดข, ์˜์–ด: depth-first search, DFS)์€ ๋งน๋ชฉ์  ํƒ์ƒ‰๋ฐฉ๋ฒ•์˜ ํ•˜๋‚˜๋กœ ํƒ์ƒ‰ํŠธ๋ฆฌ์˜ ์ตœ๊ทผ์— ์ฒจ๊ฐ€ko.wikipedia.org๊ทธ๋ž˜ํ”„์˜ ๊ฐ ์ •์ ์„ ํ•œ๋ฒˆ์”ฉ ๋ฐฉ๋ฌธํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•ด๋ณด์ž. ๊ทธ ๋ฐฉ๋ฌธ์˜ ๋ฐฉ๋ฒ•์—๋Š” ํฌ๊ฒŒ 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. ํ•˜๋‚˜๋Š” ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰์ด๋‹ค. ๋˜ ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰์ด๋‹ค. ๋ณธ ๊ฒŒ์‹œ๊ธ€์—์„œ๋Š” ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰๋ฒ•์„ ๋‹ค๋ฃฌ๋‹ค. (๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰์— ๋Œ€ํ•ด์„œ๋Š” ์ด ๊ฒŒ์‹œ๊ธ€์—์„œ ๋‹ค๋ฃฌ๋‹ค) #2 ์•Œ๊ณ ๋ฆฌ์ฆ˜์›๋ž˜๋ผ๋ฉด ์ˆœ์„œ๋„๋ฅผ ํ†ตํ•ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์†Œ๊ฐœํ•˜๊ณ  ์ฝ”๋“œ๋กœ ๋„˜์–ด๊ฐ€๋Š” ํŽธ์ด ์ดํ•ดํ•˜๊ธฐ ์ข‹์ง€๋งŒ, ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๊ทธ๋ƒฅ ์ฝ”๋“œ๋ถ€ํ„ฐ..

๊ทธ๋ž˜ํ”„ - ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰ (BFS, Breadth-First Search)

#1 ๊ทธ๋ž˜ํ”„์˜ ํƒ์ƒ‰ ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰ - ์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „.ko.wikipedia.org๊ทธ๋ž˜ํ”„์˜ ๊ฐ ์ •์ ์„ ํ•œ๋ฒˆ์”ฉ ๋ฐฉ๋ฌธํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•ด๋ณด์ž. ๊ทธ ๋ฐฉ๋ฌธ์˜ ๋ฐฉ๋ฒ•์—๋Š” ํฌ๊ฒŒ 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. ํ•˜๋‚˜๋Š” ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰์ด๋‹ค. ๋˜ ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰์ด๋‹ค. ๋ณธ ๊ฒŒ์‹œ๊ธ€์—์„œ๋Š” ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰๋ฒ•์„ ๋‹ค๋ฃฌ๋‹ค. (๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰์— ๋Œ€ํ•ด์„œ๋Š” ์ด ๊ฒŒ์‹œ๊ธ€์—์„œ ๋‹ค๋ฃฌ๋‹ค) #2 ์•Œ๊ณ ๋ฆฌ์ฆ˜์›๋ž˜๋ผ๋ฉด ์ˆœ์„œ๋„๋ฅผ ํ†ตํ•ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์†Œ๊ฐœํ•˜๊ณ  ์ฝ”๋“œ๋กœ ๋„˜์–ด๊ฐ€๋Š” ํŽธ์ด ์ดํ•ดํ•˜๊ธฐ ์ข‹์ง€๋งŒ, ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๊ทธ๋ƒฅ ์ฝ”๋“œ๋ถ€ํ„ฐ ๋ณด๋Š” ๊ฒŒ ์˜คํžˆ๋ ค ์ดํ•ด๊ฐ€ ๋” ๋น ๋ฅด๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ๋‹ค๋งŒ, ์ธ์ ‘ ๋ฐฐ์—ด (Adjacency Array)์˜ ์ง€์‹์— ๋Œ€ํ•ด์„œ๋Š” ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ์ „์ œ ํ•˜๋‹ค. ์—ฌ๊ธฐ์„œ ์‚ฌ์šฉํ•  ์ธ์ ‘ ๋ฐฐ์—ด์€ ์ด ๊ฒŒ์‹œ๊ธ€..

๊ทธ๋ž˜ํ”„ - ๊ทธ๋ž˜ํ”„์˜ ์ข…๋ฅ˜์™€ ํ‘œํ˜„

#1 ๊ทธ๋ž˜ํ”„#1-1 ๊ทธ๋ž˜ํ”„๊ทธ๋ž˜ํ”„๋Š” ํ˜„์ƒ์ด๋‚˜ ์‚ฌ๋ฌผ์„ ์ •์ (Vertex)์™€ ๊ฐ„์„ (Edge)๋กœ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ •์ ์€ ์–ด๋–ค ๊ฐœ์ฒด๋ฅผ ๋‚˜ํƒ€๋‚ด๊ณ , ๊ฐ„์„ ์€ ๊ทธ ๊ฐœ์ฒด๋“ค ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์œ„ ๊ทธ๋ฆผ์€ ๊ฐ ์ •์ (๋„์‹œ)์„ ํ•ญ๊ณตํŽธ(๊ฐ„์„ )์ด ์ž‡๋Š” ๋ชจ์Šต์„ ํ‘œํ˜„ํ•œ ์˜ˆ์ด๋‹ค. n๊ฐœ์˜ ์ •์  ์ง‘ํ•ฉ V์™€ ์ด๋“ค ๊ฐ„์— ์กด์žฌํ•˜๋Š” ๊ฐ„์„ ์˜ ์ง‘ํ•ฉ E๋กœ ๊ตฌ์„ฑ๋œ ๊ทธ๋ž˜ํ”„ G๋ฅผ G = (V, E)๋กœ ๊ธฐ์ˆ ํ•œ๋‹ค. #1-2 ๊ฐ€์ค‘์น˜๊ฐ€ ์—†๋Š” ๊ทธ๋ž˜ํ”„ vs ๊ฐ€์ค‘์น˜๊ฐ€ ์žˆ๋Š” ๊ทธ๋ž˜ํ”„๊ฐ„์„ ์—๋Š” ๊ฐ€์ค‘์น˜๋ฅผ ์ค„ ์ˆ˜ ์žˆ๋‹ค. ํ•ญ๊ณตํŽธ์œผ๋กœ ๋น„์œ ํ•˜์ž๋ฉด, ์šดํ•ญ๋น„๊ฐ€ ๊ฐ€์ค‘์น˜๊ฐ€ ๋œ๋‹ค. ๊ฐ€์ค‘์น˜๊ฐ€ ์—†๋Š” ๊ทธ๋ž˜ํ”„๋ฅผ ๊ฐ€์ค‘์น˜๊ฐ€ ์žˆ๋Š” ๊ทธ๋ž˜ํ”„์ฒ˜๋Ÿผ ์ƒ๊ฐํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ๋ชจ๋“  ๊ฐ€์ค‘์น˜๋ฅผ 1๋กœ ๋ณด๋ฉด ๋œ๋‹ค. #1-3 ๋ฌดํ–ฅ ๊ทธ๋ž˜ํ”„ vs ์œ ํ–ฅ ๊ทธ๋ž˜ํ”„ํ•ญ๊ณตํŽธ์€ ๋ฐ˜๋“œ์‹œ ์–‘๋ฐฉํ–ฅ์ ์ด์ง€๋Š” ์•Š๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋Ÿฐ๋˜์—์„œ ํŒŒ๋ฆฌ๋ฅผ ๊ฐˆ ์ˆ˜ ์žˆ..

๋™์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ (Dynamic Programming), ์ƒํ–ฅ์‹(Bottom-up) ๋ฐ ํ•˜ํ–ฅ์‹(Top-down) ์ ‘๊ทผ

#1 ์•Œ๊ณ ๋ฆฌ์ฆ˜#1-1 ์ •์˜๋™์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•œ ์ค„ ์š”์•ฝํ•˜๋ฉด ์ค‘๋ณต์˜ ์ œ๊ฑฐ๋‹ค. ์ •์ (static)์ด๋ผ๋Š” ๊ฐœ๋…๊ณผ ๋ฐ˜๋Œ€๋˜๋Š” ๊ฐœ๋…์œผ๋กœ์„œ, ๋™์ (dynamic)์ด๋ผ๋Š” ๋‹จ์–ด๊ฐ€ ์ด๋ฆ„์— ๋ถ™์—ˆ๋‹ค. ํ™•์‹คํžˆ static์ด ๋ถ™์„ ๋งŒํ•œ ์ž‘์—…์€ ์•„๋‹ˆ์ง€๋งŒ, ๊ทธ๋ ‡๋‹ค๊ณ  ๋งŽ์€ ๋‹จ์–ด๋“ค ์ค‘์— ๊ตณ์ด dynamic๊ฐ€ ๋ถ™์„ ํ•„์š” ๋˜ํ•œ ์—†๋‹ค. '๋™์ ', ' dynamic'์ด๋ผ๋Š” ์ด๋ฆ„์€ ๋™์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ (์ค‘๋ณต์˜ ์ œ๊ฑฐ๋ผ๋Š”) ํ•ต์‹ฌ์„ ์ง๊ด€์ ์œผ๋กœ ์ดํ•ดํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ๋งŒ๋“ ๋‹ค. ํ•˜์ง€๋งŒ, ๊ด€๋ก€์ ์œผ๋กœ ์ด๋ฏธ ๊ตณ์–ด์ง„ ์ด๋ฆ„์ด๋ผ ์•ž์œผ๋กœ๋„ ์“ฐ์ผ ๊ฒƒ์ด๋ผ๋Š” ์‚ฌ์‹ค์€ ์•ˆํƒ€๊นŒ์šฐ๋ฉด์„œ๋„ ๋ถ„๋ช…ํ•˜๋‹ค. #1-2 ์ข…๋ฅ˜๋™์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์ด์™€ ๊ฐ™์ด 2๊ฐ€์ง€ ๋ฐฉ์‹์œผ๋กœ ๋‚˜๋‰œ๋‹ค. #1-3 ์ƒํ–ฅ์‹(Bottom-up) ์ ‘๊ทผ [๋ฐฑ์ค€] 17626 - Four Squares#1 ์•Œ๊ณ ๋ฆฌ์ฆ˜ 123 123 ์žฌ๊ท€ ํ•จ์ˆ˜๊ฐ€..

์ •๋ ฌ - ํ€ต ์ •๋ ฌ (Quick Sort)

#1 ์•Œ๊ณ ๋ฆฌ์ฆ˜#1-1์–ด๋–ค ์›์†Œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์žก์„ ๊ฒƒ์ด๋ƒ๋Š” ์•„๋ฌด๋ž˜๋„ ์ƒ๊ด€์—†๋‹ค. ์—ฌ๊ธฐ์—์„œ๋Š” ๊ฐ ๋ฐฐ์—ด์˜ ๋งจ ๋ ์›์†Œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์žก๊ธฐ๋กœ ํ•œ๋‹ค.โ€จโ€จํ˜น์‹œ๋ผ๋„ ๊ธฐ์ค€์„ ๋Œ€๋žต์ ์œผ๋กœ๋ผ๋„ ์›์†Œ๋“ค์˜ ํ‰๊ท ๊ฐ’์— ๊ฐ€๊น๊ฒŒ ์žก์„ ์ˆ˜ ์žˆ๋Š” ์กฐ๊ฑด์ด ์กด์žฌํ•œ๋‹ค๋ฉด, ํ•ด๋‹น ์กฐ๊ฑด์„ ์ด์šฉํ•ด ๊ธฐ์ค€์„ ์žก๊ฒŒ๋” ์‘์šฉํ•  ์ˆ˜๋„ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ๊ธฐ์ค€์ด ํ‰๊ท ๊ฐ’์— ๊ฐ€๊น๊ฒŒ ์žกํž์ˆ˜๋ก, ํ€ต ์ •๋ ฌ์˜ ์„ฑ๋Šฅ์ด ์ข‹์•„์ง€๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. #1-2์ด '๋ถ„ํ• (partition)'์˜ ๊ฒฐ๊ณผ๋กœ ๊ธฐ์ค€ ์›์†Œ์˜ ์ž๋ฆฌ๊ฐ€ ์ตœ์ข…์ ์œผ๋กœ ๊ฒฐ์ •๋˜๋ฉด, ๊ทธ ์›์†Œ๋Š” ์•ž์œผ๋กœ์˜ ๋ชจ๋“  qucikSort() ์žฌ๊ท€ ํ˜ธ์ถœ์—์„œ ์‚ฌ์šฉ๋˜์ง€ ์•Š๊ณ  ์˜์›ํžˆ ๊ทธ ์ž๋ฆฌ๊ฐ€ ๊ณ ์ •๋œ๋‹ค. ์ฆ‰, ๋ถ„ํ•  ํ•œ ๋ฒˆ์— ์›์†Œ ํ•˜๋‚˜๊ฐ€ ์ •๋ ฌ๋˜๋Š” ๊ฒƒ์ด๋‹ค. #1-3 ํ€ต ์ •๋ ฌ - ์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „์œ„ํ‚ค๋ฐฑ๊ณผ, ์šฐ๋ฆฌ ๋ชจ๋‘์˜ ๋ฐฑ๊ณผ์‚ฌ์ „. ํ€ต ์ •๋ ฌ(Quicksort..

์ •๋ ฌ - ์‚ฝ์ž… ์ •๋ ฌ (Insertion Sort)

#1 ์•Œ๊ณ ๋ฆฌ์ฆ˜#1-1 #1-2 #2 ์ฝ”๋“œ#2-1 ์ž๋ฐ”public static void insertionSort(int[] array, int startIndex, int endIndex) { for(int maxIndex = (startIndex + 1); maxIndex = insertionDestination; i--) { array[i + 1] = array[i]; } array[insertionDestination] = temp;} #2-2 ์ฝ”ํ‹€๋ฆฐfun insertionSort(array: Array, startIndex : Int, endIndex : Int) { for(maxIndex : Int in (startIndex + 1)..endIndex) { ..

์ •๋ ฌ - ํž™ ์ •๋ ฌ (Heap Sort)

#1 ์•Œ๊ณ ๋ฆฌ์ฆ˜#1-1ํž™(heap)์ด๋ผ๋Š” ์˜์–ด ๋‹จ์–ด์˜ ์‚ฌ์ „์  ์˜๋ฏธ๋Š” ์Œ“์•„ ๋†“์€ ๋ฌด๋”๊ธฐ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ๋‹จ์–ด๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ๋„ ์‚ฌ์šฉ๋œ๋‹ค. ์ฒซ์งธ๋กœ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์—์„œ, ๋‘˜์งธ๋กœ ์ž๋ฃŒ๊ตฌ์กฐ์—์„œ๋‹ค. ์ด ๋‘˜์€ ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐœ๋…์ด์ง€๋งŒ, ํž™(heap)์ด๋ผ๋Š” ๋‹จ์–ด๋ฅผ ์“ด ๋งŒํผ ๊ฐ๊ฐ ํž™์˜ ์‚ฌ์ „์  ์˜๋ฏธ์™€ ๊ด€๋ จ๋œ ๋‚ด์šฉ์ด ์žˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์—์„œ์˜ ํž™์€ ๋ฌด๋”๊ธฐ๋ผ๋Š” ๋‰˜์•™์Šค๋ฅผ ํ’๊ธด๋‹ค. ํ”„๋กœ๊ทธ๋žจ ์ˆ˜ํ–‰ ๋„์ค‘ ๊ทธ ํฌ๊ธฐ๊ฐ€ ๋ณ€ํ•˜์ง€ ์•Š๋Š” ์ •์  ํ• ๋‹น๊ณผ ๋‹ฌ๋ฆฌ ๋™์  ํ• ๋‹น์€ ํ•„์š”ํ•œ ๋งŒํผ ํฌ๊ธฐ๊ฐ€ ๋ฌด๋”๊ธฐ๋กœ ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ž๋ฃŒ๊ตฌ์กฐ์—์„œ์˜ ํž™์€ '๋ฌด๋”๊ธฐ'๊ธฐ ๋ณด๋‹จ, ์Œ“์ž„์ด๋ผ๋Š” ์˜๋ฏธ๊ฐ€ ๊ฐ•์กฐ๋œ๋‹ค. ๋…ธ๋“œ๊ฐ€ ํŠน์ •ํ•œ ๊ทœ์น™์„ ์ง€ํ‚ค๋ฉฐ ์ฐจ๊ณก์ฐจ๊ณก ์Œ“์ด๋Š” ๋ชจ์Šต์—์„œ ํž™์ด๋ผ๋Š” ์ด๋ฆ„์ด ๋ถ™์—ˆ๋‹ค. #1-2ํž™ ์ •๋ ฌ์€ ์ž๋ฃŒ๊ตฌ์กฐ์—์„œ์˜ ํž™์„ ์ด์šฉํ•˜๋Š” ์ •๋ ฌ์ด๋‹ค. ์ž๋ฃŒ๊ตฌ์กฐ์—์„œ์˜ ํž™์€ ์ตœ์†Œ ํž™๊ณผ ์ตœ..

์ •๋ ฌ - ๋ณ‘ํ•ฉ ์ •๋ ฌ (Merge Sort)

#1 ์•Œ๊ณ ๋ฆฌ์ฆ˜#1-1 #1-2 #1-3 #1-4 #1-5๋ณ‘ํ•ฉ ์ •๋ ฌ์˜ ์ด ๋น„๊ต ํšŸ์ˆ˜๋Š”, ์ตœ์•…์˜ ๊ฒฝ์šฐ nlog2n์ด๋‹ค #2 ์ฝ”๋“œ#2-1 ์ž๋ฐ”public static void mergeSort(int[] array, int startIndex, int endIndex) { // (startIndex  #2-2 ์ฝ”ํ‹€๋ฆฐfun mergeSort(array: Array, startIndex : Int, endIndex : Int) { // (startIndex , startIndex: Int, midIndex : Int, endIndex: Int) { // array์—์„œ ๋‚˜๋‰œ 'f'irst ๋ถ€๋ถ„์„ ์ˆœํšŒํ•  ์ธ๋ฑ์Šค f var f = startIndex // f์˜ ์ตœ๋Œ“๊ฐ’์€ midIndex // ..

์ •๋ ฌ - ๋ฒ„๋ธ” ์ •๋ ฌ (Bubble Sort)

#1 ์•Œ๊ณ ๋ฆฌ์ฆ˜#1-1์ •๋ ฌ ๋ฐฉ์‹์ด ๋งˆ์น˜ ๊ฑฐํ’ˆ์ด ์ˆ˜์ค‘์— ์žˆ๋‹ค๊ฐ€ ์ˆ˜๋ฉด ์œ„๋กœ ๋ณด๊ธ€๋ณด๊ธ€ ์˜ฌ๋ผ๊ฐ€๋Š” ๋ชจ์Šต๊ณผ ๋น„์Šทํ•ด์„œ ๋ฒ„๋ธ” ์ •๋ ฌ์ด๋ผ๊ณ  ์ด๋ฆ„ ๋ถ™์—ฌ์กŒ๋‹ค. ๊ธฐ๋ณธ์ ์ธ ๋ฒ„๋ธ” ์ •๋ ฌ์€, ์ •๋ ฌ ์ž‘์—…์„ ์‹œ์ž‘ํ•  ๋•Œ ์ค‘๊ฐ„์— ๋ฐฐ์—ด ์ด๋ฏธ ์ •๋ ฌ๋œ ์ƒํƒœ์—ฌ๋„ maxIndex๊ฐ€ 1์ด ๋˜๋Š” ๋งˆ์ง€๋ง‰ ๋ฐ˜๋ณต๊นŒ์ง€ ๋ฌด์˜๋ฏธํ•œ ์ˆœํ™˜์„ ๊ณ„์†ํ•œ๋‹ค. ์ด ๋ฌธ์ œ์ ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ํ•œ ๊ฐ€์ง€ ์žฅ์น˜๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๊ทธ๊ฑธ ํ–ฅ์ƒ๋œ ๋ฒ„๋ธ” ์ •๋ ฌ์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. #2-1๋ฐ˜๋“œ์‹œ n * (n - 1) / 2๋ฒˆ์˜ ๋น„๊ต๋ฅผ ํ•˜๋Š” ์ผ๋ฐ˜ ๋ฒ„๋ธ” ์ •๋ ฌ์— ๋น„ํ•ด, ํ–ฅ์ƒ๋œ ๋ฒ„๋ธ” ์ •๋ ฌ์€ ๋น„๊ต ํšŸ์ˆ˜๋ฅผ ์ตœ์†Œ (n - 1)๋ฒˆ๊นŒ์ง€ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ๋‹ค. #2 ์ฝ”๋“œ#2-1 ์ž๋ฐ”public static void bubbleSort(int[] array, int startIndex, int endIndex) { ..