๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
728x90
๋ฐ˜์‘ํ˜•

Algorithm36

[Algorithm] LRU(Least Recently Used) Cache ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€? (feat. ํŽ˜์ด์ง€ ๊ต์ฒด ์•Œ๊ณ ๋ฆฌ์ฆ˜) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ ํšจ๊ณผ์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํŽ˜์ด์ง€ ๊ต์ฒด ๊ธฐ๋ฒ• ์ค‘ ํ•˜๋‚˜์ธ LRU Cache ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•ด์„œ ๋‹ค๋ค„ ๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ Least Recently Used Cache Algorithm์ด๋ž€? LRU ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ FIFO, LFU, MFU ๋“ฑ๊ณผ ๊ฐ™์€ ํŽ˜์ด์ง€ ๊ต์ฒด ๊ธฐ๋ฒ• ์ค‘ ํ•˜๋‚˜์ธ๋ฐ์š”. (ํŽ˜์ด์ง€ ๊ต์ฒด ๊ธฐ๋ฒ•์— ๋Œ€ํ•œ ๊ฒƒ์€ ์—ฌ๊ธฐ ์—์„œ ํ™•์ธํ•ด ์ฃผ์„ธ์š” ใ…œ) ๊ทธ ์ค‘์—์„œ๋„ ๊ฐ€์žฅ ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ํŽ˜์ด์ง€๋ฅผ ๊ต์ฒดํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. LRU Design LRU Cache ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ํŽ˜์ด์ง€๋ฅผ ์‚ญ์ œํ•ด ์ฃผ๊ณ  ์ƒˆ๋กญ๊ฒŒ ์‚ฌ์šฉ๋œ ํŽ˜์ด์ง€๋ฅผ ์ถ”๊ฐ€ํ•ด ์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‚ญ์ œ์™€ ์ถ”๊ฐ€๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๋น ๋ฅด๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ํ•ต์‹ฌ์ธ๋ฐ์š”. ์ฆ‰, O(1) ์‹œ๊ฐ„ ๋ณต์žก๋„๋กœ ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•ด์•ผ .. 2022. 9. 22.
[Algorithm] Floyd's Cycle Detection์ด๋ž€? (feat. Linked List) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ์ž…๋‹ˆ๋‹ค! ์š”์ƒˆ LeetCode์—์„œ Linked List์˜ ์‚ฌ์ดํด์— ๊ด€๋ จ๋œ ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š”๋ฐ slow, fast ํฌ์ธํ„ฐ๋ฅผ ๋งŽ์ด ์ด์šฉํ•˜๋”๋ผ๊ตฌ์š”. ํ•ด๋‹น ํ’€์ด๊ฐ€ ์ดํ•ด๊ฐ€ ์•ˆ๋ผ์„œ ์ฐพ์•„ ๋ณด๋‹ˆ ๊ด€๋ จ๋œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์žˆ์—ˆ๊ณ , ๊ทธ๊ฒƒ์ด Floyd's Cycle Detection ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์˜ค๋Š˜์€ ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ์—์„œ ์‚ฌ์ดํด์ด ์žˆ๋Š”์ง€ ์—†๋Š”์ง€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ณ , ํ•ด๋‹น ์‚ฌ์ดํด์˜ ์‹œ์ž‘์ ์ด ์–ด๋””์ธ์ง€ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ๋Š” Floyd's Cycle Detection ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ Floyd's Cycle Detection ์ด๋ž€? ๐Ÿ” Robert W. Floyd๊ฐ€ ๊ณ ์•ˆํ•œ ๋ฆฌ์ŠคํŠธ์˜ ์‚ฌ์ดํด์„ ๋น ๋ฅด๊ณ  ์ ์€ ๋ฉ”๋ชจ๋ฆฌ๋กœ ์ฐพ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. (Robert W. Floyd๋Š” ํ”Œ๋กœ์ด๋“œ ์™€์ƒฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋งŒ๋“ค.. 2022. 9. 18.
[Swift] 2019 KAKAO BLIND RECRUITMENT ๋ธ”๋ก ๊ฒŒ์ž„ Problem ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๋ธ”๋ก ๊ฒŒ์ž„ [[0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,4,0,0,0],[0,0,0,0,0,4,4,0,0,0],[0,0,0,0,3,0,4,0,0,0],[0,0,0,2,3,0,0,0,5,5],[1,2,2,2,3,3,0,0,0,5],[1,1,1,0,0,0,0,0,0,5]] 2 programmers.co.kr Solution 1. ๋จผ์ € ๊ฒ€์€ ๋ธ”๋ก์„ ๋–จ์–ด๋œจ๋ ค ์‚ญ์ œ๊ฐ€ ๊ฐ€๋Šฅํ•œ ๋ธ”๋ก๋“ค์„ ์ฐพ์•„๋‚ธ๋‹ค. ์ฃผ์–ด์ง„ ๋ธ”๋ก์€ ์ฐจ๋ก€๋Œ€๋กœ 1๋ฒˆ ๋ธ”๋ก์˜ 0,1,2,3 ํƒ€์ž…, 2๋ฒˆ ๋ธ”๋ก์˜ 0,1,2,3 ํƒ€์ž… , 3๋ฒˆ ๋ธ”๋ก์˜ 0,1,2,3ํƒ€์ž…์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•  ๋•Œ ๊ฒ€์€ ๋ธ”.. 2022. 3. 28.
[JS] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ํฐ์ผ“๋ชฌ Problem ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ํฐ์ผ“๋ชฌ ๋‹น์‹ ์€ ํฐ์ผ“๋ชฌ์„ ์žก๊ธฐ ์œ„ํ•œ ์˜ค๋žœ ์—ฌํ–‰ ๋์—, ํ™ ๋ฐ•์‚ฌ๋‹˜์˜ ์—ฐ๊ตฌ์‹ค์— ๋„์ฐฉํ–ˆ์Šต๋‹ˆ๋‹ค. ํ™ ๋ฐ•์‚ฌ๋‹˜์€ ๋‹น์‹ ์—๊ฒŒ ์ž์‹ ์˜ ์—ฐ๊ตฌ์‹ค์— ์žˆ๋Š” ์ด N ๋งˆ๋ฆฌ์˜ ํฐ์ผ“๋ชฌ ์ค‘์—์„œ N/2๋งˆ๋ฆฌ๋ฅผ ๊ฐ€์ ธ๊ฐ€๋„ ์ข‹๋‹ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. programmers.co.kr Solution 1. nums์˜ ๊ธธ์ด์˜ ๋ฐ˜์„ ๊ตฌํ•œ๋‹ค. let half = nums.length/2 2. Set์— nums์— ์žˆ๋Š” ๋ฒˆํ˜ธ๋ฅผ ๋„ฃ๋Š”๋‹ค. let set = new Set() for (let i = 0; i < nums.length; i++) { set.add(nums[i]) } 3. Set์˜ ์‚ฌ์ด์ฆˆ์™€ nums์˜ ๊ธธ์ด์˜ ๋ฐ˜๊ณผ ๋น„๊ตํ•ด ๋” ์ž‘์€ ๊ฒƒ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. return Math.min(set.size,half) Source Code fun.. 2022. 2. 6.
[Swift] Baekjoon ๋‚˜์ด์ˆœ ์ •๋ ฌ 10814๋ฒˆ Problem 10814๋ฒˆ: ๋‚˜์ด์ˆœ ์ •๋ ฌ ์˜จ๋ผ์ธ ์ €์ง€์— ๊ฐ€์ž…ํ•œ ์‚ฌ๋žŒ๋“ค์˜ ๋‚˜์ด์™€ ์ด๋ฆ„์ด ๊ฐ€์ž…ํ•œ ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. ์ด๋•Œ, ํšŒ์›๋“ค์„ ๋‚˜์ด๊ฐ€ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆœ์œผ๋กœ, ๋‚˜์ด๊ฐ€ ๊ฐ™์œผ๋ฉด ๋จผ์ € ๊ฐ€์ž…ํ•œ ์‚ฌ๋žŒ์ด ์•ž์— ์˜ค๋Š” ์ˆœ์„œ๋กœ ์ •๋ ฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ www.acmicpc.net Solution 1. ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ํ™œ์šฉํ•ด ์œ ์ € ์ •๋ณด๋ฅผ ๋„ฃ๋Š”๋‹ค. key๊ฐ’์œผ๋กœ ๋‚˜์ด๋ฅผ,value๊ฐ’์œผ๋กœ ์ด๋ฆ„์„ ๋„ฃ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๋”•์…”๋„ˆ๋ฆฌ์— key๊ฐ’์ด ๋น„์–ด์žˆ์ง€ ์•Š๋‹ค๋ฉด value์— ์ถ”๊ฐ€๋กœ append ํ•ด์ค๋‹ˆ๋‹ค. var userDic:[Int:[String]] = [:] let numberOfUser = Int(readLine()!)! for _ in 0.. 2022. 1. 30.
[Swift] 2022 KAKAO BLIND RECRUITMENT ์ฃผ์ฐจ ์š”๊ธˆ ๊ณ„์‚ฐ Problem ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์ฃผ์ฐจ ์š”๊ธˆ ๊ณ„์‚ฐ [180, 5000, 10, 600] ["05:34 5961 IN", "06:00 0000 IN", "06:34 0000 OUT", "07:59 5961 OUT", "07:59 0148 IN", "18:59 0000 IN", "19:09 0148 OUT", "22:59 5961 IN", "23:00 5961 OUT"] [14600, 34400, 5000] programmers.co.kr Solution 1. records์˜ ๊ธฐ๋ก๋Œ€๋กœ ์‹œ๊ฐ„์„ ๊ณ„์‚ฐํ•ด ์ €์žฅํ•œ๋‹ค. var timeInfo:[String:Int] = [:] var parkInfo:[String:Int] = [:] func calTimeByRecord(_ records:[String],_ parkIn.. 2022. 1. 19.
[Swift] 2022 KAKAO BLIND RECRUITMENT k์ง„์ˆ˜์—์„œ ์†Œ์ˆ˜ ๊ฐœ์ˆ˜ ๊ตฌํ•˜๊ธฐ Problem ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - k์ง„์ˆ˜์—์„œ ์†Œ์ˆ˜ ๊ฐœ์ˆ˜ ๊ตฌํ•˜๊ธฐ ๋ฌธ์ œ ์„ค๋ช… ์–‘์˜ ์ •์ˆ˜ n์ด ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ์ด ์ˆซ์ž๋ฅผ k์ง„์ˆ˜๋กœ ๋ฐ”๊ฟจ์„ ๋•Œ, ๋ณ€ํ™˜๋œ ์ˆ˜ ์•ˆ์— ์•„๋ž˜ ์กฐ๊ฑด์— ๋งž๋Š” ์†Œ์ˆ˜(Prime number)๊ฐ€ ๋ช‡ ๊ฐœ์ธ์ง€ ์•Œ์•„๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค. 0P0์ฒ˜๋Ÿผ ์†Œ์ˆ˜ ์–‘์ชฝ์— 0์ด ์žˆ๋Š” ๊ฒฝ์šฐ P0์ฒ˜๋Ÿผ ์†Œ programmers.co.kr Solution 1. n์„ k์ง„์ˆ˜๋กœ ๋ฐ”๊พผ๋‹ค. let change = String(n,radix: k) 2. ๋ฐ”๊พผ ๋ฌธ์ž๋ฅผ 0์„ ๊ธฐ์ค€์œผ๋กœ ๋‚˜๋ˆˆ๋‹ค. let numbers = change.split(separator: "0") 3. ์†Œ์ˆ˜์ธ์ง€ ํŒ๋ณ„ํ•œ๋‹ค. func isPrimeNumber(_ n:Int) -> Bool { if n == 1 { return false } if n == 2 || n == 3 {.. 2022. 1. 19.
[Algorithm] ์†Œ์ˆ˜์™€ ๊ด€๋ จ๋œ ์•Œ๊ณ ๋ฆฌ์ฆ˜(feat. ์—๋ผํ† ์Šค ํ…Œ๋„ค์Šค์˜ ์ฒด) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ’ป ์ž…๋‹ˆ๋‹ค! ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋ฅผ ํ’€๋‹ค ๋ณด๋ฉด ์†Œ์ˆ˜๋ฅผ ์ฐพ์•„ํ– ํ•˜๋Š” ์œ ํ˜•์ด ๋งŽ์€๋ฐ์š”. ์†Œ์ˆ˜์˜ ๊ฐฏ์ˆ˜๋ฅผ ์ฐพ์•„์•ผ ํ•  ๋•Œ, ์†Œ์ˆ˜์ธ์ง€ ์•„๋‹Œ์ง€ ๋ถ„๋ณ„ํ•ด์•ผ ํ•  ๋•Œ ๋“ฑ ํšจ์œจ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ ์ •ํ™•ํžˆ ์•Œ๊ณ  ๋น ๋ฅด๊ฒŒ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ ๊ธ€์„ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~! ๊ธฐ์กด์˜ ์†Œ์ˆ˜๋ฅผ ์ฐพ๋Š” ๋ฐฉ๋ฒ• ๊ธฐ์กด์˜ ์†Œ์ˆ˜๋ฅผ ์ฐพ๋Š” ๋ฐฉ๋ฒ•์€ k๋ผ๋Š” ์ˆ˜๊ฐ€ ์žˆ๋‹ค๋ฉด ๋‹จ์ˆœํ•˜๊ฒŒ 2๋ถ€ํ„ฐ n๊นŒ์ง€ k๋กœ ๋‚˜๋ˆ ์„œ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง€๋Š” ์ˆซ์ž์˜ ๊ฐฏ์ˆ˜๋ฅผ ํŒ๋ณ„ํ•˜๋ฉด ๋˜๊ฒ ์ฃ ? ํ•˜์ง€๋งŒ ์ด๋Ÿฐ ๋ฐฉ๋ฒ•์€ ์ˆซ์ž๊ฐ€ ์ปค์ง€๋ฉด ์ปค์งˆ์ˆ˜๋ก ๋น„ํšจ์œจ์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”๋ฐ์š”. ์—๋ผํ† ์Šค ํ…Œ๋„ค์Šค์˜ ์ฒด ๋จผ์ € 2๋ถ€ํ„ฐ n๊นŒ์ง€์˜ ๊ตฌ๊ฐ„์—์„œ ์†Œ์ˆ˜์˜ ๊ฐฏ์ˆ˜๋‚˜, ์–ด๋–ค ์†Œ์ˆ˜๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„  "์—๋ผํ† ์Šค ํ…Œ๋„ค์Šค์˜ ์ฒด"๋ฅผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„.. 2022. 1. 19.
[Algorithm] ๋™์  ๊ณ„ํš๋ฒ•(Dynamic Programming)์ด๋ž€? ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ’ป ์ž…๋‹ˆ๋‹ค! ๊ทธ ๋™์•ˆ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ ๋™์  ๊ณ„ํš๋ฒ• ๊ด€๋ จ๋œ ๋ฌธ์ œ๊ฐ€ ๋‚˜์˜ค๋ฉด ์–ด๋ ค์›€์„ ๊ฒช๊ณค ํ–ˆ๋Š”๋ฐ์š”.. ์˜ค๋Š˜์€ ๋™์  ๊ณ„ํš๋ฒ•์— ๋Œ€ํ•ด์„œ ์ œ๋Œ€๋กœ ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”! ๋™์  ๊ณ„ํš๋ฒ•(Dynamic Programming)์ด๋ž€? ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ 1950๋…„๋Œ€ ๋ฏธ๊ตญ์˜ ์ˆ˜ํ•™์ž์ธ ๋ฆฌ์ฒ˜๋“œ ๋ฒจ๋งจ์ด ์ตœ์ ํ™” ๋ฌธ์ œ(Optimization Problem)๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ ๊ณ ์•ˆ๋˜์—ˆ๋‹ค. ๋ณต์žกํ•œ ๋ฌธ์ œ๋ฅผ ๊ฐ„๋‹จํ•œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆ„์–ด ํ‘ธ๋Š” ๋ฐฉ๋ฒ•์„ ๋งํ•˜๋ฉฐ ์ด๊ฒƒ์€ ๋ถ€๋ถ„ ๋ฌธ์ œ ๋ฐ˜๋ณต๊ณผ ์ตœ์  ๋ถ€๋ถ„ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์— ๋น„ํ•ด ๋”์šฑ ์ ์€ ์‹œ๊ฐ„ ๋‚ด์— ํ’€ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. - ์œ„ํ‚ค ๋ฐฑ๊ณผ - ์ฆ‰, ๋ถ„ํ•  ์ •๋ณต ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๊ฐ™์ด ํฐ ๋ฌธ์ œ๋ฅผ ์ž‘๊ฒŒ ์ชผ๊ฐœ์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด ๋‚˜๊ฐ€๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. ๋‹ค.. 2021. 12. 9.
[Swift] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์›”๊ฐ„ ์ฝ”๋“œ ์ฑŒ๋ฆฐ์ง€ 3 n^2 ๋ฐฐ์—ด ์ž๋ฅด๊ธฐ Problem ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - n^2 ๋ฐฐ์—ด ์ž๋ฅด๊ธฐ ์ •์ˆ˜ n, left, right๊ฐ€ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ๋‹ค์Œ ๊ณผ์ •์„ ๊ฑฐ์ณ์„œ 1์ฐจ์› ๋ฐฐ์—ด์„ ๋งŒ๋“ค๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. nํ–‰ n์—ด ํฌ๊ธฐ์˜ ๋น„์–ด์žˆ๋Š” 2์ฐจ์› ๋ฐฐ์—ด์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. i = 1, 2, 3, ..., n์— ๋Œ€ํ•ด์„œ, ๋‹ค์Œ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค. 1ํ–‰ 1์—ด๋ถ€ programmers.co.kr Solution 1. ๋ฐฐ์—ด์— ์ˆซ์ž๊ฐ€ ์ฑ„์›Œ์ง€๋Š” ๊ทœ์น™์„ ํŒŒ์•…ํ•œ๋‹ค. ๋ฐฐ์—ด์— ์ˆซ์ž๊ฐ€ ์ฑ„์›Œ์ง€๋Š” ๊ทœ์น™์€ iํ–‰์— i๊ฐœ์˜ i๊ฐ€ ์ฑ„์›Œ์ง€๊ณ  ๊ทธ ๋‹ค์Œ i+1๋ถ€ํ„ฐ n๊นŒ์ง€ ์ฑ„์›Œ์ง‘๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด n์ด 10์ด๊ณ  i๊ฐ€ 5๋ผ๋ฉด 5๋ฒˆ์งธ ํ–‰์€ 5๊ฐ€ 5๊ฐœ๊ฐ€ ๋จผ์ € ์ฑ„์›Œ์ง‘๋‹ˆ๋‹ค. -> [5,5,5,5,5] ๊ทธ๋ฆฌ๊ณ  6(5+1)๋ถ€ํ„ฐ 10๊นŒ์ง€ ์ฑ„์›Œ์ง‘๋‹ˆ๋‹ค. -> [5,5,5,5,5,6,7,8,9,10] 2. ์‹œ์ž‘๋˜๋Š” ํ–‰๊ณผ ์—ด, ๋๋‚˜๋Š” .. 2021. 12. 1.
[Algorithm] ํ€ต ์ •๋ ฌ(Quick Sort)๋ž€? (feat. Swift) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ’ป ์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ๋“œ๋””์–ด ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ ๋ง ๊ทธ๋Œ€๋กœ ๋งค์šฐ ๋น ๋ฅธ ์ˆ˜ํ–‰์‹œ๊ฐ„์„ ๊ฐ€์ง„ ํ€ต ์ •๋ ฌ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค! ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ ํ€ต ์ •๋ ฌ(Quick Sort)์ด๋ž€? ๐Ÿง ํ€ต ์ •๋ ฌ(Quicksort)์€ ์ฐฐ์Šค ์•คํ„ฐ๋‹ˆ ๋ฆฌ์ฒ˜๋“œ ํ˜ธ์–ด๊ฐ€ ๊ฐœ๋ฐœํ•œ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ๋‹ค๋ฅธ ์›์†Œ์™€์˜ ๋น„๊ต๋งŒ์œผ๋กœ ์ •๋ ฌ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋น„๊ต ์ •๋ ฌ์— ์†ํ•œ๋‹ค. - ์œ„ํ‚ค ๋ฐฑ๊ณผ - (์ฐธ๊ณ ๋กœ ๋ฆฌ์ฒ˜๋“œ ํ˜ธ์–ด๊ฐ€ ํ€ต ์ •๋ ฌ์„ ๊ฐœ๋ฐœํ–ˆ์„ ๋‹น์‹œ ๋‚˜์ด๋Š” 26์‚ด์ด๋ผ๊ณ  ํ•˜๋„ค์š”...) ํ•ฉ๋ณ‘ ์ •๋ ฌ๊ณผ ๊ฐ™์ด ๋ถ„ํ•  ์ •๋ณต ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ์†ํ•˜๊ณ  ํ‰๊ท ์ ์œผ๋กœ ๋งค์šฐ ๋น ๋ฅธ ์ˆ˜ํ–‰์†๋„๋ฅผ ์ž๋ž‘ํ•ฉ๋‹ˆ๋‹ค. ํ€ต ์ •๋ ฌ ๊ณผ์ • ๐Ÿ”จ ํ€ต ์ •๋ ฌ์„ ํ•˜๊ธฐ ์œ„ํ•ด์„  ํ”ผ๋ด‡(Pivot)์ด ํ•ต์‹ฌ์ด ๋˜๋Š”๋ฐ์š”. ์—ฌ๊ธฐ์„œ ํ”ผ๋ด‡์€ ์–ด๋–ค ๊ฒƒ์ผ๊นŒ์š”? ํ”ผ๋ด‡์€ ๋ฐ”๋กœ ๊ธฐ์ค€์ž…๋‹ˆ๋‹ค. ํ”ผ๋ด‡์„ ๊ฐ€์žฅ ์ฒซ ๋ฒˆ์งธ ์ธ๋ฑ์Šค๋ฅผ ์„ ํƒํ•  ์ˆ˜๋„ .. 2021. 10. 25.
[Algorithm] ํž™ ์ •๋ ฌ(HeapSort)์ด๋ž€? (feat.Swift) ์•ˆ๋…•ํ•˜์„ธ์š” Foma ๐Ÿ’ป ์ž…๋‹ˆ๋‹ค! ์ €๋ฒˆ ์‹œ๊ฐ„์— ํž™์ด๋ž€ ์ž๋ฃŒ๊ตฌ์กฐ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜๋Š”๋ฐ์š”. (ํ˜น์‹œ๋ผ๋„ ์•ˆ๋ณด์‹  ๋ถ„์€ ์—ฌ๊ธฐ ์—์„œ ๋ณด๊ณ  ์™€์ฃผ์„ธ์š”!) ์˜ค๋Š˜์€ ํž™์„ ์ด์šฉํ•ด์„œ ์ •๋ ฌ์„ ํ•˜๋Š” ํž™์†ŒํŠธ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค! ๋ฐ”๋กœ ์‹œ์ž‘ํ• ๊ฒŒ์š”~ ํž™ ์ •๋ ฌ((HeapSort)์ด๋ž€? ๐Ÿง ํž™ ์ •๋ ฌ(Heap sort)์ด๋ž€ ์ตœ๋Œ€ ํž™ ํŠธ๋ฆฌ๋‚˜ ์ตœ์†Œ ํž™ ํŠธ๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•ด ์ •๋ ฌ์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ์„œ, ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ์„ ์œ„ํ•ด์„œ๋Š” ์ตœ๋Œ€ ํž™์„ ๊ตฌ์„ฑํ•˜๊ณ  ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ์„ ์œ„ํ•ด์„œ๋Š” ์ตœ์†Œ ํž™์„ ๊ตฌ์„ฑํ•˜๋ฉด ๋œ๋‹ค. - ์œ„ํ‚ค ๋ฐฑ๊ณผ - ์ฆ‰, ํž™์„ ์ด์šฉํ•ด์„œ ์ •๋ ฌ์„ ํ•˜๋Š” ๋ฐฉ์‹์ด์—์š”. ํž™ ์ •๋ ฌ ๊ณผ์ • ๐Ÿ”จ ํž™ ์ •๋ ฌ ๊ณผ์ •์€ ํž™์—์„œ ์‚ญ์ œ๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ์™€ ๋˜‘๊ฐ™์•„์š”. ์‚ญ์ œ๊ณผ์ •์ด ์•„๋ž˜์™€ ๊ฐ™์€๋ฐ์š”. ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ์‚ญ์ œํ•˜๊ณ  ๋ฐฐ์—ด์— ์ฐจ๋ก€๋กœ ์Œ“๊ฒŒ๋˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? ์ตœ๋Œ€ํž™์ด๋ผ๋ฉด ๊ฐ€์žฅ ํฐ ์ˆซ์ž๊ฐ€ ์ฐจ๋ก€.. 2021. 10. 19.
728x90
๋ฐ˜์‘ํ˜•