๋ชฉ๋กSWiFT (59)

Focus On Develop ๐ŸคŸ๐ŸคŸ

[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..