[๐Ÿ“ iOS TIL] #4 ... ๐ŸŽ Swift ๏ผ† Algorithm ๐Ÿ–ฅ๏ธ

TaeUkยท2024๋…„ 2์›” 26์ผ
0

๐ŸŽ iOS TIL

๋ชฉ๋ก ๋ณด๊ธฐ
3/18
post-thumbnail

Swift ๊ฐœ๋ฐœ ๊ณต๋ถ€์— ์•ž์„œ

YouTube - ๊ฐœ๋ฐœํ•˜๋Š”์ •๋Œ€๋ฆฌ

๊ฐœ๋ฐœ ๊ณต๋ถ€ ์ค‘ ์–ด๋ ค์›€์„ ๋Š๋‚„ ๋•Œ

  • ๋ชจ๋ฅด๋ฉด ๋ฉ”๋ชจํ•˜๋Š” ์Šต๊ด€

    1. ์ผ๋‹จ ๋ชจ๋ฅด๋Š” ๋‚ด์šฉ์„ ์ ์–ด๋‘”๋‹ค.
    2. ์ด๋™์ด๋‚˜ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์‹œ๊ฐ„ ๋“ฑ์˜ ์งฌ๋‚˜๋Š” ์‹œ๊ฐ„์„ ํ™œ์šฉํ•˜์—ฌ ๊ตฌ๊ธ€๋งํ•œ๋‹ค.
    3. ๊ฒ€์ƒ‰ํ•œ ๋‚ด์šฉ์„ ๋น ๋ฅด๊ฒŒ ํ›‘๊ณ  ์ดํ•ดํ•œ ๋‚ด์šฉ์„ ๋ฉ”๋ชจ๋กœ ๊ธฐ๋ก์„ ๋‚จ๊ธด๋‹ค.
    4. ์ด๋•Œ, ์ดํ•ด๊ฐ€ ์•ˆ๋œ๊ฑด ๊ทธ๋ƒฅ ๋„˜๊ธฐ์ง€ ๋ง๊ณ  โ€œ์ดํ•ด๊ฐ€ ์•ˆ๋จโ€์ด๋ผ๊ณ  ๊ฐ„๋‹จํžˆ ์ ์–ด๋‘๊ณ  ๋„˜๊ธด๋‹ค.
    5. ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์œผ๋กœ ๋ชจ๋ฅด๋Š” ๋‚ด์šฉ์„ ์กฐ๊ธˆ์”ฉ ์ฑ„์›Œ๋‚˜๊ฐ„๋‹ค.
  • ๊ฒ€์ƒ‰ ๋Šฅ๋ ฅ ํ‚ค์šฐ๊ธฐ

  • ๋ชจ๋ฅด๋Š” ๋‚ด์šฉ์ด ์ƒ๊ธฐ๋ฉด ์•”๊ธฐ๋ณด๋‹ค๋Š” ๊ฒ€์ƒ‰ํ•˜๋Š” ๋Šฅ๋ ฅ์„ ํ‚ค์šฐ๊ธฐ

    ์—ฌ๋Ÿฌ ๊ฐœ๋ฐœํ™˜๊ฒฝ์ด ๋น ๋ฅด๊ฒŒ ๋ณ€ํ™”ํ•˜๊ณ  ์—…๋ฐ์ดํŠธ๋˜๊ธฐ์— ์•”๊ธฐ๋ณด๋‹ค๋Š” ๊ฒ€์ƒ‰์ด ๋”์šฑ ํšจ์œจ์ ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค!

๊ตฌ๊ธ€์„ ํ™œ์šฉํ•ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ

  • ๊ตฌ๊ธ€๋ง ํ•˜๋Š” ์ด์œ 
    ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•œ ๋ฌธ์ œ์— ๋Œ€ํ•ด ๋ณธ์ธ ์Šค์Šค๋กœ ํ•ด๊ฒฐ๋ฒ•์„ ์ฐพ์•„๋ณด๋ฉฐ ์ •๋ณด๋ฅผ ์Šต๋“ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๊ตฌ๊ธ€๋ง ํ•˜๋Š” ๋ฒ•

    1. ๋‹จ์–ด ๋‹จ์œ„๋กœ ๊ฒ€์ƒ‰
      "ํ”Œ๋žซํผ + ์–ธ์–ด + ๊ธฐ๋Šฅ ํ˜น์€ ๋ฐฐ์šธ ์š”์†Œ"์œผ๋กœ ๊ฒ€์ƒ‰ Ex) ios swift foreach
    2. ์ž๋ฃŒ ๊ฒ€์ƒ‰ ์‹œ, ์ตœ์‹ ์ˆœ์œผ๋กœ ๋ณด๊ธฐ
    3. ๋Œ“๊ธ€๊นŒ์ง€ ๋””ํ…Œ์ผ ํ•˜๊ฒŒ ๋ณด๊ธฐ
      Stack Overflow์™€ ๊ฐ™์€ ํ”Œ๋žซํผ์—์„œ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์†”๋ฃจ์…˜์„ ์ฐพ์•˜์„๋•Œ, ํ•ด๊ฒฐ์ฑ…์— ๋Œ€ํ•œ ํ‰๊ฐ€ ํ˜น์€ ํ”ผ๋“œ๋ฐฑ๋„ ํ•จ๊ป˜ ํ™•์ธ
    4. ๊ณต์‹๋ฌธ์„œ ํ™•์ธ
      Stack Overflow, ๋ฏธ๋””์—„, ๊นƒ ๋“ฑ์„ ์ฐธ๊ณ 
    5. ๊นƒํ—ˆ๋ธŒ ์ฐธ๊ณ 
      ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์˜ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ฐธ๊ณ 
    6. ๊ตฌ๊ธ€์— ํ‚ค์›Œ๋“œ ์‚ฌ์šฉ โ€œawesome ???โ€
      ๊นƒํ—™์—์„œ ๊ด€๋ จ ์ •๋ณด๋ฅผ ๋”์šฑ ํšจ์œจ์ ์œผ๋กœ ์ฐพ์„ ์žˆ์Œ

IOS ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๊ธฐ ์œ„ํ•ด

ํšŒ์‚ฌ์—์„œ ์š”๊ตฌํ•˜๋Š” ์ธ์žฌ์— ๋Œ€ํ•œ ๋‹ˆ์ฆˆ ์ถฉ์กฑ

๋„์›€์ด ๋˜๋Š” ๊ฒƒ

  • ๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ ์šด์˜

    ์ง€์‹ ๋ฐ ๊ณต๋ถ€ ๋…ธํŠธ ์ •๋ฆฌ ๊ฐ€๋Šฅ
    ํฌํŠธํด๋ฆฌ์˜ค ์—ญํ™œ๋กœ ๋ณธ์ธ์„ ์–ดํ•„ํ•  ์ˆ˜ ์žˆ์Œ

  • ์–ดํ”Œ์„ ๋งŒ๋“ค์–ด๋ณด๊ณ  ์ถœ์‹œ๊นŒ์ง€ ์‹œ๋„
    ์šฐ์„  ์ตœ์†Œ ๊ธฐ๋Šฅ ์ œํ’ˆ(MVP) ๊ธฐํš ๋ฐ ์ œ์ž‘

    ์ตœ์†Œ ๊ธฐ๋Šฅ ์ œํ’ˆ ์ œ์ž‘์— ๋Œ€ํ•œ ์žฅ์ 

    1. ์ถœ์‹œ ํ™•๋ฅ  ๋†’์•„์ง
    2. ์ถœ์‹œ ๊ฒฝํ—˜(๋ฆฌ์ , ์•ฑ ์‹ฌ์‚ฌ ๋“ฑ์˜ ๋‹ค์–‘ํ•œ ๊ฒฝํ—˜)
      https://developer.apple.com/kr/app-store/review/guidelines/
  • ์• ํ”Œ ํœด๋จผ ์ธํ„ฐํŽ˜์ด์Šค ๋””์ž์ธ ์ฝ์–ด๋ณด๊ธฐ

    https://developer.apple.com/kr/design/tips/


์ŠคํŒŒ๋ฅดํƒ€ ๋‚ด๋ฐฐ์บ  1, 2์ฃผ์ฐจ ์ •๋ฆฌ

Xcode๋ฅผ ํ™œ์šฉํ•œ iOS ๊ฐœ๋ฐœ

  • ๊ฐœ๋ฐœ ์–ธ์–ด: Swift, Objective-C

  • Interface Builder์™€ UI ๊ตฌ์„ฑ
    ๊ฐ์ข… ์š”์†Œ๋“ค์„ Drag & Drop์„ ํ™œ์šฉํ•˜์—ฌ ๋ฐฐ์น˜ํ•˜๊ธฐ์— ์‚ฌ์šฉํ•˜๊ธฐ ๋งค์šฐ ํŽธ๋ฆฌํ•จ

  • ํ…Œ์ดํ„ฐ ํƒ€์ž…์— ๋Œ€ํ•ด ๋งค์šฐ ์˜ˆ๋ฏผํ•จ

  • IBAction
    Drag & Drop ํ™œ์šฉ

    ํŠน์ • ๋™์ž‘์„ ํ–‰ํ•  ๋•Œ์˜ ๊ธฐ๋Šฅ ๊ตฌํ˜„

  • IBOutlet
    Drag & Drop ํ™œ์šฉ

    ํ™”๋ฉด ์ƒ์˜ ๋ทฐ์™€ ์ฝ”๋“œ๋ฅผ ์ผ์น˜์‹œํ‚ฌ ๋•Œ ์‚ฌ์šฉ


1. lv.1 ์ž๋ฆฟ์ˆ˜ ๋”ํ•˜๊ธฐ

  • ๋ฌธ์ œ ์„ค๋ช…
    ์ž์—ฐ์ˆ˜ N์ด ์ฃผ์–ด์ง€๋ฉด, N์˜ ๊ฐ ์ž๋ฆฟ์ˆ˜์˜ ํ•ฉ์„ ๊ตฌํ•ด์„œ return ํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ์„ธ์š”.

์˜ˆ๋ฅผ ๋“ค์–ด N = 123์ด๋ฉด 1 + 2 + 3 = 6์„ return ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ ํ’€์ด


import Foundation

func solution(_ n:Int) -> Int {
    var str = String(n).map { Int(String($0))! }
    var arr = Array(str)
    
    var val = 0

    for i in 0..<arr.count {
        val += arr[i]
    }
    
    return val
}

0๊ฐœ์˜ ๋Œ“๊ธ€