반응형

안녕하세요. 개발 중인 정주입니다.

 

오늘은 프로그래머스 - 소수 만들기 문제를 풀었습니다.

 


목차


    Github

     

    GitHub - jeongju9216/SwiftAlgorithm: 스위프트 알고리즘

    스위프트 알고리즘. Contribute to jeongju9216/SwiftAlgorithm development by creating an account on GitHub.

    github.com

     

    문제 링크

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

     

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

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

    programmers.co.kr

     


    풀이

    이번 문제는 소수를 구하는 방법만 알면 쉽게 해결할 수 있습니다.

    소수가 무엇인지, 어떻게 구하는지 모른다면 약간 헤맬 수 있겠네요.

     

    소수를 구하는 방법에는 크게 두 가지 방법이 있는데요.

    반복문을 돌려서 구하는 방법과 에라토스테네스의 체 방법으로 구하는 방법이 있습니다.

     

    이번에는 최대 수가 적기 때문에 반복문을 이용해 문제를 해결했습니다.

     


    전체 코드

    
          
    import Foundation
    func solution(_ nums:[Int]) -> Int {
    var answer = 0
    for i in 0..<nums.count {
    for j in i+1..<nums.count {
    for k in j+1..<nums.count {
    let sum = nums[i] + nums[j] + nums[k]
    if isPrime(sum) {
    answer += 1
    }
    }
    }
    }
    return answer
    }
    func isPrime(_ number: Int) -> Bool {
    if number < 4 {
    return (number == 1) ? false : true
    } else {
    for i in 2...Int(sqrt(Double(number))) {
    if number % i == 0 {
    return false
    }
    }
    }
    return true
    }
    let nums = [1,2,7,6,4]
    print(solution(nums))

     


    아직은 초보 개발자입니다.

    더 효율적인 코드 훈수 환영합니다!

    공감 댓글 부탁드립니다.

     

    반응형
    유정주