๋ชฉ๋กiOS [Swift] (55)

Focus On Develop ๐ŸคŸ๐ŸคŸ

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋ชจ์˜๊ณ ์‚ฌ

3๋ช…์˜ ์ˆ˜ํฌ์ž์˜ ๋‹ต์•ˆ์ œ์ถœ ํŒจํ„ด์„ ์•Œ๋ ค์ฃผ๊ณ , ์ •๋‹ต์ด ์ฃผ์–ด์กŒ์„๋•Œ ๋ˆ„๊ฐ€ ์ œ์ผ ๋งŽ์ด ๋‹ต์„ ๋งž์ท„๋‚˜? ํ•˜๋Š” ๋ฌธ์ œ๊ณ , ์ˆ˜ํฌ์ž๋“ค์ด ๋™์ผํ•œ ์ ์ˆ˜๋ฅผ ์Šต๋“ํ–ˆ๋‹ค๋ฉด ์ตœ๊ณ  ๋“์ ์ž๊ฐ€ ์—ฌ๋Ÿฌ๋ช…์ด ๋  ์ˆ˜๋„ ์žˆ๋‹ค. ์ด ๋ฌธ์ œ์—์„œ ์ƒ๊ฐํ•ด๋ด์•ผ ํ•  ํฌ์ธํŠธ๋Š” ํฌ๊ฒŒ 2๊ฐ€์ง€๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค. 1) ์ •๋‹ต๊ณผ ๋ฐ˜๋ณต๋˜๋Š” ํŒจํ„ด์„ ์–ด๋–ป๊ฒŒ ๋น„๊ตํ• ์ง€์™€, 2) ์ง‘๊ณ„๋œ ์ ์ˆ˜๋กœ ์ตœ๊ณ ๋“์ ์ž ๋ฐฐ์—ด์€ ์–ด๋–ป๊ฒŒ ๋งŒ๋“ค์ง€? ์šฐ์„  ๋ฐ˜๋ณต๋˜๋Š” ํŒจํ„ด์€.. ๊ฐ€์žฅ ์‰ฝ๊ฒŒ ๋– ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ํŒจํ„ด์˜ ๋ฐ˜๋ณต๋˜๋Š” ๋‹จ์œ„์˜ ๊ฐฏ์ˆ˜(์œ„ ๋ฌธ์ œ์˜ ๊ฒฝ์šฐ 5๊ฐœ, 8๊ฐœ, 10๊ฐœ)์— ๋Œ€ํ•œ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋ฅผ ์•Œ๋ฉด, ์ •๋‹ต์„ ํ•œ๋ฒˆ ํƒ์ƒ‰ํ•˜๋ฉด์„œ ํŒจํ„ด์„ ์ฒ˜์Œ์œผ๋กœ ๋Œ์•„๊ฐ€๊ฒŒ๋” ํ•˜๋Š”๊ฒŒ ๊ฐ€๋Šฅํ•˜๋‹ค. ์—ฌ๊ธฐ์„œ ์ƒ๊ฐ์„ ์กฐ๊ธˆ๋งŒ ์‘์šฉํ•ด๋ณด๋ฉด, ์ •๋‹ต ๋ฐฐ์—ด์„ ํƒ์ƒ‰ํ•˜๋Š” ๋™์•ˆ ๊ทธ์‹œ์ ์˜ Index๋ฅผ ๊ฐ ํŒจํ„ด ๋‹จ์œ„์˜ ๊ฐฏ์ˆ˜๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ์ฐพ์•„๋ฒ„๋ฆฌ๋ฉด ๋”ฐ๋กœ ๊ณ„์‚ฐํ•˜์ง€ ..

[Swift] map, filter, reduce

Apple Developer Document์—์„œ map, filter, reduce์— ๋Œ€ํ•œ ์ •์˜๋ฅผ ๋ฐœ์ทŒํ•ด์˜ค๊ธด ํ–ˆ์ง€๋งŒ.. ์•„๋ฌด๋ž˜๋„ ๋‚˜๋Š” ์˜์–ด๋Š” ์–ด๋ ต๋”๋ผ. ๐Ÿ˜‚ ๐Ÿ˜‚ ๋‚˜์ค‘์—๋ผ๋„ ์‰ฝ๊ฒŒ ์ฐพ์•„๋ณด๋ ค๊ณ  ํ•œ๊ธ€๋กœ ์ •๋ฆฌํ•ด๋†”์•ผ์ง€ ใ…‹ใ…‹ ์ƒ์„ธ๋‚ด์šฉ : map | Apple Document 1. map ๊ทธ๋ ‡๋‹ค๊ณ  ํ•œ๋‹ค.. ์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด ํด๋กœ์ €(์กฐ๊ฑด)๋กœ ๋ฐฐ์—ด์˜ ๊ฐ ํ•ญ๋ชฉ๋“ค์„ ๋ฐ˜์˜ํ•œ ๊ฒฐ๊ณผ๋ฌผ์„ ๊ฐ€์ง„ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์˜ˆ์‹œ) 2. filter ํด๋กœ์ €(์กฐ๊ฑด)๋กœ ๋ฐฐ์—ด์˜ ๊ฐ ํ•ญ๋ชฉ๋“ค์„ ๋น„๊ตํ•˜์—ฌ ์ผ์น˜ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฌผ์„ ๊ฐ€์ง„ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์˜ˆ์‹œ) 3. reduce ํด๋กœ์ €(์กฐ๊ฑด)๋กœ ๋ฐฐ์—ด์˜ ๊ฐ ํ•ญ๋ชฉ๋“ค์„ ์žฌ๊ท€์ ์œผ๋กœ ์ ์šฉ์‹œ์ผœ ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ฒซ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ์ดˆ๊ธฐ๊ฐ’, ๋‘๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ํด๋กœ์ € ์˜ˆ์‹œ)

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ฒด์œก๋ณต

์šฐ์„  ์ œํ•œ์‚ฌํ•ญ์„ ๋ณด๋ฉด ์ „์ฒด Input์˜ ์ˆ˜๋Š” ํฌ์ง€ ์•Š์•„์„œ ์‹œ๊ฐ„์ดˆ๊ณผ๋Š” ํฌ๊ฒŒ ๋ฌธ์ œ๊ฐ€ ๋  ๊ฒƒ ๊ฐ™์ง€๋Š” ์•Š๋‹ค. ๋„๋‚œ๋‹นํ•œ ํ•™์ƒ, ์—ฌ๋ฒŒ์˜ ์ฒด์œก๋ณต์„ ๊ฐ€์ง„ ํ•™์ƒ์ด ๊ฐ๊ฐ ๋ฐ˜๋“œ์‹œ ์กด์žฌํ•˜๋‹ˆ, ์—†๋Š” ๊ฒฝ์šฐ์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ๋”ฐ๋กœ ์˜ˆ์™ธ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์•„๋„ ๋  ๊ฒƒ ๊ฐ™๋‹ค. (๋ณดํ†ต ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€๋•Œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๋๋ถ€๋ถ„ ์กฐ๊ฑด(?) ์—์„œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ ํ•ด์ค˜์•ผ ํ•  ๋ถ€๋ถ„์ด ์ข…์ข… ์ƒ๊ธฐ๋Š” ๊ฒƒ ๊ฐ™๋‹ค.) reserve๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์—ฌ๋ฒŒ์ด ์žˆ๋Š” ํ•™์ƒ์ด ๋„๋‚œ๋‹นํ•œ ํ•™์ƒ(lost)์—๊ฒŒ ๋นŒ๋ ค์ค€๋‹ค๊ณ  ์ƒํ™ฉ์„ ๊ฐ€์ •ํ•˜๊ณ  ๋ฌธ์ œ๋ฅผ ํ’€ ๊ฒƒ์ด๋‹ค. ๋จผ์ € reserve์— ์žˆ๋Š” ํ•™์ƒ์ด lost์—๋„ ์žˆ๋Š”์ง€ ์ฒดํฌ (์—ฌ๋ฒŒ์ด ์žˆ์–ด๋„ ๋„๋‚œ๋‹นํ–ˆ์œผ๋ฉด ๋นŒ๋ ค์ค„ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ) ํ•˜๊ณ , ๋ณธ์ธ ์•ž -> ๋’ค ์ˆœ์„œ๋กœ lost์— ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉด ๋นŒ๋ ค์ฃผ๊ณ , ๋„๋‚œ๋‹นํ•œ ๋ชฉ๋ก์—์„œ ์ง€์›Œ์ฃผ๋ฉด ๋˜๊ฒ ๋‹ค. ์—ฌ๊ธฐ์„œ ๋นŒ๋ ค์ฃผ๋Š”..

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋‘ ๊ฐœ ๋ฝ‘์•„์„œ ๋”ํ•˜๊ธฐ

์ด ๋ฌธ์ œ๋Š” ์ •์ˆ˜ํ˜• ๋ฐฐ์—ด์ด ์ฃผ์–ด์ง€๊ณ , ๊ทธ ์•ˆ์—์„œ ์ž„์˜์˜ ๋‘ ์ˆซ์ž๋ฅผ ๊ณจ๋ผ ๋‘ ์ˆ˜๋ฅผ ํ•ฉํ•œ ๊ฐ’์˜ ๋ชจ๋“  ๊ฒฝ์šฐ๋ฅผ ๊ตฌํ•ด์•ผ ํ•˜๋Š” ๋ฌธ์ œ๋‹ค. ์ œํ•œ์‚ฌํ•ญ์— ์ฃผ์–ด์ง€๋Š” ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ๋ณด๋ฉด Worst Case์˜ ํƒ์ƒ‰ ํšŸ์ˆ˜๋Š” 10000ํšŒ (100x100) ์ธ๋ฐ, ์‚ฌ์‹ค์ƒ ์ด์ •๋„๋Š” ์ œํ•œ์‹œ๊ฐ„์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํŒ๋‹จํ–ˆ๋‹ค. (1์–ตํšŒ ์—ฐ์‚ฐ/ํƒ์ƒ‰ ๊ธฐ์ค€ 1์ดˆ๋กœ ํŒ๋‹จ) ๊ทธ๋ƒฅ Brute force ๋ฐฉ์‹์œผ๋กœ ๋ฐฐ์—ด์„ ํƒ์ƒ‰ํ•˜๋ฉด์„œ ๋‘ ์ˆ˜์˜ ํ•ฉ์„ ๋ชจ์€ ๋’ค์— ๋งˆ์ง€๋ง‰์— ์ค‘๋ณต์ œ๊ฑฐ, ์ •๋ ฌ๋งŒ ํ•ด์ฃผ๋ฉด ๋˜๊ฒ ๊ตฌ๋‚˜. ์ •๋ ฌ์€ Array์—์„œ ์ œ๊ณตํ•˜๋Š” .sorted() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ์ค‘๋ณต์ œ๊ฑฐ๋Š” Set์„ ์ด์šฉํ•˜๋ฉด ๋˜๊ฒ ๋Š”๊ฑธ..!? import Foundation var result: [Int] = [] func solution(_ numbers:[Int]) -> [Int..