3️⃣ Swift/Problem Solving

[Swift Algorithm] ν•˜μƒ€λ“œ 수 Programmers(Lv.1)

seolhee2750 2021. 6. 6. 22:37
문제 풀이

μ–‘μ˜ μ •μˆ˜ xκ°€ ν•˜μƒ€λ“œ 수이렀면 x의 자릿수의 ν•©μœΌλ‘œ xκ°€ λ‚˜λˆ„μ–΄μ Έμ•Ό ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ 18의 자릿수 합은 1+8=9이고, 18은 9둜 λ‚˜λˆ„μ–΄ λ–¨μ–΄μ§€λ―€λ‘œ 18은 ν•˜μƒ€λ“œ μˆ˜μž…λ‹ˆλ‹€. μžμ—°μˆ˜ xλ₯Ό μž…λ ₯λ°›μ•„ xκ°€ ν•˜μƒ€λ“œ μˆ˜μΈμ§€ μ•„λ‹Œμ§€ κ²€μ‚¬ν•˜λŠ” ν•¨μˆ˜, solution을 μ™„μ„±ν•΄μ£Όμ„Έμš”.

 

μ œν•œ 쑰건
  • xλŠ” 1 이상, 10000 μ΄ν•˜μΈ μ •μˆ˜μž…λ‹ˆλ‹€.

 

μž…μΆœλ ₯ 예
arr return
10 true
12 true
11 false
13 false

 

λ‚΄ 문제 풀이
func solution(_ x:Int) -> Bool {
    let number = String(x).map{Int(String($0))!}.reduce(0, +)
    
    if x % number == 0 {
        return true
    }
    
    else {
        return false
    }
}
  • μž…λ ₯ 받은 수λ₯Ό String으둜 λ³€ν™˜, map μ΄μš©ν•˜μ—¬ 각 자리 수λ₯Ό λͺ¨λ‘ Int둜 λ°”κΏ”μ„œ λͺ¨λ“  자리 수λ₯Ό λ”ν•΄μ£Όμ—ˆλ‹€.
  • μž…λ ₯ 받은 수 xλ₯Ό 각 자리수끼리 λ”ν•œ κ°’μœΌλ‘œ λ‚˜λˆ„μ—ˆμ„ λ•Œ, λ‚˜λ¨Έμ§€κ°€ 0이면 true, μ•„λ‹ˆλ©΄ falseλ₯Ό λ¦¬ν„΄ν•œλ‹€.

 

πŸ’‘ ν”Όλ“œλ°±
  • 문제λ₯Ό ν’€κ³  λ‹€λ₯Έ λΆ„λ“€ 풀이λ₯Ό 보닀가 μƒκ°λ‚œκ±΄λ°,
    μ–΄μ°¨ν”Ό Bool 값을 리턴해야 ν•˜λŠ” 것이라면 
    ꡳ이 if문을 μ‚¬μš©ν•˜μ§€ μ•Šκ³  더 κ°„λ‹¨νžˆ 풀이λ₯Ό λ§Œλ“€ 수 μžˆμ„ 것 κ°™λ‹€.

πŸ‘‰ μˆ˜μ •ν•œ μ½”λ“œ. μ΄λ ‡κ²Œ..!

func solution(_ x:Int) -> Bool {
    return x % (String(x).map{Int(String($0))!}.reduce(0, +)) == 0
}

 


 

문제

https://programmers.co.kr/learn/courses/30/lessons/12947/solution_groups?language=swift