날쌘 개발자

소수 만들기 본문

코딩테스트/프로그래머스

소수 만들기

훈식이 2022. 3. 13. 07:07
728x90
문제 설명

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

import Foundation

func prime(_ num:Int) -> Bool{
    if (num == 2) {return true}

    for i in 2...Int(num / 2){
            if (num % i == 0) {return false}
        }

        return true
}

func solution(_ nums:[Int]) -> Int {
    var sum:Int = 0
    var result:Int = 0
    for i in 0...nums.count - 1 {
        for j in i...nums.count - 1 {
            for k in j...nums.count - 1 {
                if nums[i] != nums[j] && nums[j] != nums[k] && nums[i] != nums[k] {
                    sum = nums[i] + nums[j] + nums[k]
                    if(prime(sum) == true){
                        result += 1

                    }
                }


            }
        }
    }
    return result
}

임의의 요소들을 가진 배열에서 세가지를 뽑아 더하는 과정이 생각보다 까다로워 고민이 많았다.
결국 반복문을 세개 겹쳐서 사용했고, 소수임을 검증하는 과정은 sum을 2로 나눈뒤 반복문으로 2에서부터 나눠가는 prime함수를 만들어 적용하였다.

  • 여담으로 최근에 yagom님이 주최하는 커리어 스타터 캠프에 지원하여 사전과제를 수행했는데, 과제도 적당히 했고 되기만 하면 좋은 경험이될것같아서 기대중이었지만... 당시 확인하지못했던 참가비부분을 중간에 확인하고 아쉽게 마음을 접었다.. 금액도 금액이지만 캠프 일정이 복학시기와 겹쳐 중간 하차할 가능성도 있어 휴학생입장에서는 부담이 되는건 사실이라 ㅠ 아쉬울따름이다..
  • 사전과제를 수행하면서도 생각보다 큰 공부가 되어 블로그에 기록하고싶지만 유포를 금지한다는 문구를 본 기억이 있어 곤란할것같다.
728x90

'코딩테스트 > 프로그래머스' 카테고리의 다른 글

가운데 글자 가져오기  (0) 2022.03.27
두 개 뽑아서 더하기  (0) 2022.03.27
키패드 누르기  (0) 2022.02.28
숫자 문자열과 영단어  (0) 2022.02.24
없는 숫자 더하기  (0) 2022.02.20