아리의 iOS 탐구생활

[Swift/프로그래머스] 소수 만들기 본문

Swift/알고리즘

[Swift/프로그래머스] 소수 만들기

Ari Lee 2021. 9. 16. 17:26
반응형

 

 

코딩테스트 연습 - 소수 만들기

주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때

programmers.co.kr

 

수학에서 소수(Prime number)는 인수로 1과 자기 자신만을 가지는 숫자를 말한다. 

소수가 아닐 경우에는 1과 자신을 제외한 숫자로 n을 나누었을 때 나누어 떨어지게 된다.

그럼 소수인지 확인할 수 있는 방법은 무엇일까? 

 

문제 핵심 및 힌트

  • 소수를 판별할 수 있는가?
  • 3개의 숫자를 중복없이 합을 차례로 만들 수 있는가?

 

이 두가지를 중심으로 문제를 풀어보면 될 것 같다.

 

 

더보기
// 숫자가 소수인지 확인하는 함수
func isPrime(_ n: Int) -> Bool {
    for i in 2..<n {
        if n % i == 0 { // 나누어떨어진다면 소수가 아님
            return false
        }
    }
    return true
}

func solution(_ nums:[Int]) -> Int {
    var answer = 0

    for i in 0...nums.count - 3 { // 배열 0번째부터...
        let first = nums[i]
        for j in i+1...nums.count - 2 { // 1번째부터...
            let second = nums[j]
            for k in j+1...nums.count - 1 { // 2번째부터...
                let third = nums[k]
                if isPrime(first + second + third) { // 주어진 3개의 수를 더했을때 소수인지 확인하는 조건문.
                    answer += 1
                }
            }
        }
    }
    
    return answer
}

 

 

반응형
Comments