DevlogπŸ‘©πŸ»‍πŸ’»/Algorithm

[Swift] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ Lv.1 : μ†Œμˆ˜ λ§Œλ“€κΈ°

yujjne 2024. 4. 30. 17:38

β–²λ¬Έμ œ linkπŸ”—

 

문제 μ„€λͺ…

μ£Όμ–΄μ§„ 숫자 쀑 3개의 수λ₯Ό λ”ν–ˆμ„ λ•Œ μ†Œμˆ˜κ°€ λ˜λŠ” 경우의 개수λ₯Ό κ΅¬ν•˜λ €κ³  ν•©λ‹ˆλ‹€. μˆ«μžλ“€μ΄ λ“€μ–΄μžˆλŠ” λ°°μ—΄ numsκ°€ λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ§ˆ λ•Œ,

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


μ œν•œμ‚¬ν•­

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

μž…μΆœλ ₯ 예

 

μž…μΆœλ ₯ 예 μ„€λͺ…

μž…μΆœλ ₯ 예 #1

  • [1,2,4]λ₯Ό μ΄μš©ν•΄μ„œ 7을 λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€.

μž…μΆœλ ₯ 예 #2

  • [1,2,4]λ₯Ό μ΄μš©ν•΄μ„œ 7을 λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€.
  • [1,4,6]을 μ΄μš©ν•΄μ„œ 11을 λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€.
  • [2,4,7]을 μ΄μš©ν•΄μ„œ 13을 λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€.
  • [4,6,7]을 μ΄μš©ν•΄μ„œ 17을 λ§Œλ“€ μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.

 


 

✏️ 풀이

func isPrime(_ n: Int) -> Bool {
    for i in 2..<n {
        if n % i == 0 {
            return false
        }
    }
    return true
}

 

μ†Œμˆ˜μΈμ§€ νŒλ³„ν•˜λŠ” ν•¨μˆ˜
πŸ‘‰ 2λΆ€ν„° ν•΄λ‹Ή μˆ«μžλ³΄λ‹€ μž‘은 μˆ˜κΉŒμ§€ λ°˜λ³΅
πŸ‘‰ ν•˜λ‚˜λΌλ„ λ‚˜λˆ„μ–΄λ–¨μ–΄μ§€λ©΄ μ†Œμˆ˜κ°€ μ•„λ‹Œ κ²ƒμœΌλ‘œ νŒλ³„

 

func solution(_ nums:[Int]) -> Int {
    var answer = 0
    
    for i in 0...nums.count - 3 {
        let first = nums[i]
        for j in i+1...nums.count - 2 {
            let second = nums[j]
            for k in j+1...nums.count - 1 {
                let third = nums[k]
                if isPrime(first + second + third) {
                    answer += 1
                }
            }
        }
    }
    return answer
}

μš°μ„  nums에 μ€‘λ³΅λœ μˆ«μžκ°€ μ—†λ‹€λŠ” μ œν•œ μ‚¬ν•­μ΄ μžˆκΈ° λ•Œλ¬Έμ— μ€‘볡 μ‘°ν•© ν™•인 μ½”λ“œλŠ” μ—†λ‹€.

μ„Έ κ°œμ˜ μ€‘첩 λ°˜λ³΅λ¬Έμ„ μ‚¬μš©ν•˜μ—¬
1. λ°°μ—΄μ˜ μ²«λ²ˆμ§Έ μš”μ†Œ ~ λ’€μ—μ„œ μ„Έλ²ˆμ§Έ μš”μ†Œ
2. μ„ νƒλœ μš”μ†Œμ˜ λ‹€μŒ μš”μ†Œ ~ λ’€μ—μ„œ λ‘λ²ˆμ§Έ μš”μ†Œ
3. 2번의 μ„ νƒλœ μš”μ†Œμ˜ λ‹€μŒ μš”μ†Œ ~ λ§ˆμ§€λ§‰ μš”μ†Œ
μ΄λ ‡κ²Œ λ°˜λ³΅ν•˜μ—¬ κ°κ°μ˜ μš”μ†Œλ₯Ό ν•˜λ‚˜μ”© μ„ νƒ ν›„ κ° λ°˜λ³΅λ¬Έμ—μ„œ μ„ νƒλœ μˆ«μžμ˜ ν•©μ„ ν™•μΈν–ˆλ‹€.

μ€‘λ³΅λœ μ‘°ν•©μ„ μƒμ„±ν•˜μ§€ μ•ŠλŠ” μ΄μœ λŠ” μ²«λ²ˆμ§Έ μˆ«μžλŠ” λ°°μ—΄μ˜ λ§ˆμ§€λ§‰ λ‘ μˆ«μž μ€‘ ν•˜λ‚˜κ°€ λ  μˆ˜ μ—†λ‹€.
두 λ²ˆμ§Έ μˆ«μžλŠ” μ²« λ²ˆμ§Έ μ„ νƒλœ μˆ«μž μ΄ν›„μ˜ μš”μ†Œ μ€‘ ν•˜λ‚˜μ΄κ³  λ§ˆμ§€λ§‰ μˆ«μžλŠ” μ„ νƒλ  μˆ˜ μ—†λ‹€.
μ„Έ λ²ˆμ§Έ μˆ«μžλŠ”  μ•žμ˜ λ‘ μˆ«μž μ΄ν›„λΆ€ν„° λ§ˆμ§€λ§‰ μš”μ†Œ μ€‘ ν•˜λ‚˜μ΄λ‹€.
μ•žμ„œ λ§ν–ˆλ“―이 μ œν•œμ‚¬ν•­μ— λ°°μ—΄ μ•ˆμ— μ€‘λ³΅λœ μˆ«μžκ°€ μ—†κ³ , μ„Έ μˆ«μžκ°€ λͺ¨λ‘ λ‹€λ₯΄κ²Œ μ„ νƒλ˜κΈ° λ•Œλ¬Έμ— μ€‘볡쑰합이 λ°œμƒν•˜μ§€ μ•ŠλŠ”λ‹€!