λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
3️⃣ Swift/Problem Solving

[Swift Algorithm] μ†Œμˆ˜ λ§Œλ“€κΈ° Programmers(Lv.1)

by seolhee2750 2021. 6. 18.
문제 μ„€λͺ…

주어진 숫자 쀑 3개의 수λ₯Ό λ”ν–ˆμ„ λ•Œ μ†Œμˆ˜κ°€ λ˜λŠ” 경우의 개수λ₯Ό κ΅¬ν•˜λ €κ³  ν•©λ‹ˆλ‹€. μˆ«μžλ“€μ΄ λ“€μ–΄μžˆλŠ” λ°°μ—΄ numsκ°€ λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ§ˆ λ•Œ, nums에 μžˆλŠ” μˆ«μžλ“€ 쀑 μ„œλ‘œ λ‹€λ₯Έ 3개λ₯Ό 골라 λ”ν–ˆμ„ λ•Œ μ†Œμˆ˜κ°€ λ˜λŠ” 경우의 개수λ₯Ό return ν•˜λ„λ‘ solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•΄μ£Όμ„Έμš”.

 

μ œν•œ 쑰건
  • nums에 λ“€μ–΄μžˆλŠ” 숫자의 κ°œμˆ˜λŠ” 3개 이상 50개 μ΄ν•˜μž…λ‹ˆλ‹€.
  • nums의 각 μ›μ†ŒλŠ” 1 이상 1,000 μ΄ν•˜μ˜ μžμ—°μˆ˜μ΄λ©°, μ€‘λ³΅λœ μˆ«μžκ°€ λ“€μ–΄μžˆμ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

 

μž…μΆœλ ₯ 예
nums result
[1,2,3,4] 1
[1,2,7,6,4] 4

 

λ‚΄ 문제 풀이
import Foundation

func solution(_ nums:[Int]) -> Int {
    var sum = [Int]()
    var count = 0
    
    for i in 0..<nums.count-2 {
        for j in i+1..<nums.count {
            for k in j+1..<nums.count {
                sum.append(nums[i] + nums[j] + nums[k])
            }
        }
    }
    
    for i in 0..<sum.count {
        for j in 2..<sum[i] {
            if sum[i] % j == 0 {
                break
            }
            else if j == sum[i]-1 && sum[i] % j != 0 {
                count += 1
            }
        }
    }

    return count
}
  • 3쀑 for문을 μ‚¬μš©ν•˜μ—¬ λͺ¨λ“  3개 수의 합을 κ΅¬ν–ˆκ³ , sum 배열에 append ν•΄μ£Όμ—ˆλ‹€.
  • 2쀑 forλ¬Έ μ΄μš©ν•˜μ—¬ μ†Œμˆ˜μΈ 수의 개수λ₯Ό κ΅¬ν•΄μ£Όμ—ˆλ‹€.
  • 2λΆ€ν„° ν•΄λ‹Ή 수의 μ „κΉŒμ§€ λ‚˜λˆ λ³΄λ©° λκΉŒμ§€ λ‚˜λˆ μ§€μ§€ μ•Šμ€ μˆ˜λŠ” μ†Œμˆ˜λ‘œ νŒλ³„ν•˜μ—¬ count에 개수λ₯Ό λ”ν•΄μ£Όμ—ˆλ‹€.

 

πŸ’‘ ν”Όλ“œλ°±
  • μ½”λ“œκ°€ κΈΈμ–΄μ§€λ‹ˆ μ†Œμˆ˜ κ΅¬ν•˜λŠ” 뢀뢄은 λ”°λ‘œ ν•¨μˆ˜λ‘œ λ§Œλ“€μ–΄μ€¬μ–΄λ„ 쒋을 것 κ°™λ‹€.
  • 이전에 μ†Œμˆ˜ κ΅¬ν•˜λŠ” 문제λ₯Ό ν’€μ—ˆλ˜ 기얡이 μžˆμ–΄ 큰 κ³ λ―Ό 없이 κ΅¬ν˜„ν•  수 μžˆμ—ˆλ‹€.

 


 

문제

https://programmers.co.kr/learn/courses/30/lessons/12977

 

λŒ“κΈ€