반응형
안녕하세요. 개발 중인 정주입니다.
오늘은 프로그래머스 - 소수 만들기 문제를 풀었습니다.
목차
Github
문제 링크
https://programmers.co.kr/learn/courses/30/lessons/12977
풀이
이번 문제는 소수를 구하는 방법만 알면 쉽게 해결할 수 있습니다.
소수가 무엇인지, 어떻게 구하는지 모른다면 약간 헤맬 수 있겠네요.
소수를 구하는 방법에는 크게 두 가지 방법이 있는데요.
반복문을 돌려서 구하는 방법과 에라토스테네스의 체 방법으로 구하는 방법이 있습니다.
이번에는 최대 수가 적기 때문에 반복문을 이용해 문제를 해결했습니다.
전체 코드
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))
아직은 초보 개발자입니다.
더 효율적인 코드 훈수 환영합니다!
공감과 댓글 부탁드립니다.
반응형