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

TaeUkยท2024๋…„ 3์›” 8์ผ
0

๐ŸŽ iOS TIL

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

[level 1] ์—†๋Š” ์ˆซ์ž ๋”ํ•˜๊ธฐ - 86051

  • ๋ฌธ์ œ ์„ค๋ช…
    0๋ถ€ํ„ฐ 9๊นŒ์ง€์˜ ์ˆซ์ž ์ค‘ ์ผ๋ถ€๊ฐ€ ๋“ค์–ด์žˆ๋Š” ์ •์ˆ˜ ๋ฐฐ์—ด numbers๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. numbers์—์„œ ์ฐพ์„ ์ˆ˜ ์—†๋Š” 0๋ถ€ํ„ฐ 9๊นŒ์ง€์˜ ์ˆซ์ž๋ฅผ ๋ชจ๋‘ ์ฐพ์•„ ๋”ํ•œ ์ˆ˜๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.
๋ฌธ์ œ ํ’€์ด

import Foundation

func solution(_ numbers:[Int]) -> Int {
    var ans: Int = 0
    
    for i in 0...9 {
       ans += numbers.contains(i) != true ? i : 0
    }
    
    return ans
}

๋งจ ์ฒ˜์Œ ๋ฌธ์ œ๋ฅผ ๋ณด์•˜์„ ๋•Œ, ๊ณ ์ฐจํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์‹ถ์—ˆ์ง€๋งŒ ์œ„ ์ฝ”๋“œ์ฒ˜๋Ÿผ ์กฐ๊ฑด๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์˜€๋‹ค.

๋ฌธ์ œ ํ’€์ด

import Foundation

func solution(_ numbers:[Int]) -> Int {
    return (0...9).filter{ !numbers.contains($0) }.reduce(0, +)
}

์šฐ์„ , ๋ฌธ์ œ ํ’€์ด๋งŒ ๊ตฌํ˜„ํ•˜์˜€๊ณ  ๊ณ ์ฐจํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์‹œ ์ˆ˜์ •ํ•ด๋ณด์•˜๋‹ค!


[level 1] ์ œ์ผ ์ž‘์€ ์ˆ˜ ์ œ๊ฑฐํ•˜๊ธฐ - 12935

  • ๋ฌธ์ œ ์„ค๋ช…
    ์ •์ˆ˜๋ฅผ ์ €์žฅํ•œ ๋ฐฐ์—ด, arr ์—์„œ ๊ฐ€์žฅ ์ž‘์€ ์ˆ˜๋ฅผ ์ œ๊ฑฐํ•œ ๋ฐฐ์—ด์„ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜, solution์„ ์™„์„ฑํ•ด์ฃผ์„ธ์š”. ๋‹จ, ๋ฆฌํ„ดํ•˜๋ ค๋Š” ๋ฐฐ์—ด์ด ๋นˆ ๋ฐฐ์—ด์ธ ๊ฒฝ์šฐ์—” ๋ฐฐ์—ด์— -1์„ ์ฑ„์›Œ ๋ฆฌํ„ดํ•˜์„ธ์š”. ์˜ˆ๋ฅผ๋“ค์–ด arr์ด [4,3,2,1]์ธ ๊ฒฝ์šฐ๋Š” [4,3,2]๋ฅผ ๋ฆฌํ„ด ํ•˜๊ณ , [10]๋ฉด [-1]์„ ๋ฆฌํ„ด ํ•ฉ๋‹ˆ๋‹ค.
๋ฌธ์ œ ํ’€์ด

func solution(_ arr:[Int]) -> [Int] {
    var val_min = arr.min()!
    var ans = arr
        
    if ans.count == 1 {
        return [-1]
    }
    else {
        ans.remove(at: ans.firstIndex(of: val_min)!)
    }
    
    
    return ans
}

ํ•ด๋‹น ๋ฌธ์ œ๋„ ๊ณ ์ฐจํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ’€์ด๋ฅผ ์‹œ๋„ํ•˜์˜€์œผ๋‚˜, ์‹คํŒจํ•˜๊ณ  ์กฐ๊ฑด๋ฌธ์œผ๋กœ ๋จผ์ € ํ’€์–ด๋ณด์•˜๋‹ค... ๐Ÿฅฒ

ํ•ด๋‹น ์ฝ”๋“œ ์ค‘์—์„œ firstIndex(of: val_min)์˜ ๋ฐ˜ํ™˜๊ฐ’์ด ์˜ต์…”๋„ ํƒ€์ž…์ด์—ฌ์„œ, ์ด๋ฅผ ๊ฐ•์ œ๋กœ ์–ธ๋žฉํ•‘ํ•˜์—ฌ ์‚ฌ์šฉํ•˜์˜€๋‹ค.

์•„๋งˆ ์ž…๋ ฅ๋œ ๋ฐฐ์—ด์— ์•„๋ฌด๊ฒƒ๋„ ์—†์œผ๋ฉด ๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ๊นŒ, ์˜ต์…”๋„ ํƒ€์ž…์œผ๋กœ ๋ฐ˜ํ™˜๋˜๋Š”๊ฑฐ ๊ฐ™๋‹ค.

๋‹ค์Œ๋ถ€ํ„ฐ ์˜ต์…”๋„ ํƒ€์ž…์„ ๋‹ค๋ฃฐ ๋•Œ, !๋ฅผ ํ™œ์šฉํ•œ ๊ฐ•์ œ ์–ธ๋žฉํ•‘์ด ์•„๋‹ˆ๋ผ ๋”์šฑ ์•ˆ์ „ํ•œ ๋ฐฉ๋ฒ•์„ ์ฐพ์•„๋ณด์•„์•ผ๊ฒ ๋‹ค!


[level 1] ๊ฐ€์šด๋ฐ ๊ธ€์ž ๊ฐ€์ ธ์˜ค๊ธฐ - 12903

  • ๋ฌธ์ œ ์„ค๋ช…
    ๋‹จ์–ด s์˜ ๊ฐ€์šด๋ฐ ๊ธ€์ž๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜, solution์„ ๋งŒ๋“ค์–ด ๋ณด์„ธ์š”. ๋‹จ์–ด์˜ ๊ธธ์ด๊ฐ€ ์ง์ˆ˜๋ผ๋ฉด ๊ฐ€์šด๋ฐ ๋‘๊ธ€์ž๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
๋ฌธ์ œ ํ’€์ด

func solution(_ s:String) -> String {
    var val = s.map{$0}
    var arr: [String] = []
    var pos: Int = val.count / 2
    
    if val.count % 2 == 1 {
        arr.append(String(val[pos]))
    }
    else {
        arr.append(String(val[pos-1]))
        arr.append(String(val[pos]))
    }
    
    let ans = arr.reduce("", +)
    
    return ans
    
}

[level 1] ์ˆ˜๋ฐ•์ˆ˜๋ฐ•์ˆ˜๋ฐ•์ˆ˜๋ฐ•์ˆ˜๋ฐ•์ˆ˜? - 12922

  • ๋ฌธ์ œ ์„ค๋ช…
    ๊ธธ์ด๊ฐ€ n์ด๊ณ , "์ˆ˜๋ฐ•์ˆ˜๋ฐ•์ˆ˜๋ฐ•์ˆ˜...."์™€ ๊ฐ™์€ ํŒจํ„ด์„ ์œ ์ง€ํ•˜๋Š” ๋ฌธ์ž์—ด์„ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜, solution์„ ์™„์„ฑํ•˜์„ธ์š”. ์˜ˆ๋ฅผ๋“ค์–ด n์ด 4์ด๋ฉด "์ˆ˜๋ฐ•์ˆ˜๋ฐ•"์„ ๋ฆฌํ„ดํ•˜๊ณ  3์ด๋ผ๋ฉด "์ˆ˜๋ฐ•์ˆ˜"๋ฅผ ๋ฆฌํ„ดํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
๋ฌธ์ œ ํ’€์ด

func solution(_ n:Int) -> String {
    var arr: [String] = []
    var count: Int = 1
    
    while count <= n {
        count % 2 == 1 ? arr.append("์ˆ˜") : arr.append("๋ฐ•")
        
        count += 1
    }
    
    var ans = arr.joined()
    
    return ans
}

์—ฌ๋Ÿฌ๋ฒˆ ์‹œ๋„ ๋์— ๊ณ ์ฐจํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•˜๊ณ  ๋ฌธ์ œ ํ’€์ด๋ฅผ ๋งˆ๋ฌด๋ฆฌํ•˜์˜€๋‹ค.

์ด ๋ฌธ์ œ๋„ ๋‹ค์Œ์— ๊น”๋”ํ•˜๊ฒŒ ์ •๋ฆฌํ•ด์•ผ๊ฒ ๋‹ค!


[level 1] ๋‚ด์  - 70128

  • ๋ฌธ์ œ ์„ค๋ช…
    ๊ธธ์ด๊ฐ€ ๊ฐ™์€ ๋‘ 1์ฐจ์› ์ •์ˆ˜ ๋ฐฐ์—ด a, b๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. a์™€ b์˜ ๋‚ด์ ์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.
    ์ด๋•Œ, a์™€ b์˜ ๋‚ด์ ์€ a[0]b[0] + a[1]b[1] + ... + a[n-1]*b[n-1] ์ž…๋‹ˆ๋‹ค. (n์€ a, b์˜ ๊ธธ์ด)
๋ฌธ์ œ ํ’€์ด

import Foundation

func solution(_ a:[Int], _ b:[Int]) -> Int {
    return (0..<a.count).map{ a[$0] * b[$0] }.reduce(0, +)
}

์ง€๊ธˆ๊นŒ์ง€ ํ’€์—ˆ๋˜ ๋ฌธ์ œ ์ค‘์—์„œ ๊ฐ€์žฅ ๊น”๋”ํ•˜๊ฒŒ ์ž˜ ํ‘ผ ๊ฒƒ ๊ฐ™๋‹ค! map ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ, solution ํ•จ์ˆ˜์˜ ์ž…๋ ฅ์œผ๋กœ ๋“ค์–ด์˜ค๋Š” a์™€ b ๋ฐฐ์—ด์„ ๊ฐ๊ฐ์˜ ์ธ๋ฑ์Šค๋ฅผ ๋”ํ•˜์˜€๋‹ค. ์ดํ›„, reduce๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ชจ๋“  ๊ฐ’์„ ๋”ํ•˜๊ณ  ํ•ด๋‹น ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜์˜€๋‹ค.

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