728x90
https://programmers.co.kr/learn/courses/30/lessons/12977?language=swift
구현 (조합) level 1
자연수를 담은 배열이 주어지고 그 중 3개의 값을 더해 소수인지 아닌지 판별 -> 더해서 소수인 개수를 반환하는 문제
소수 판별 + 조합 문제 이다.
접근방법
소수판별에는 에라토스테네스의 체를 사용하여 시간적 효율을 높이 구할 수도 있고, 제곱근을 사용하여 범위를 줄여 검사할 수도 있지만
수의 범위가 작아서, 그냥 n보다 작은수까지를 모두 검사했다.
그리고 조합도 백트래킹을 사용하여 할 수 있었겠지만 (swift에는 조합에 관한 라이브러리가 없다 내가 만들어야하나)
딱 3개여서 그냥 반복문을 중첩하기로 했다. 3중 포문
의문점
이 문제를 풀면서 정말 동일해보이는 코드인데 어떤건 core dump 에러가 나버렸다. 띄어쓰기나 변수명을 바꾸면 통과되길래 그 이유인가 했더니 다시 변경사항을 없애서 돌려봐도 돌아가서 정확한 이유를 못찾았다..; 어쨌든 이건 돌아가는 코드.
소스코드
import Foundation
func isPrime(_ num: Int) -> Bool {
for d in 2..<num {
if num % d == 0 { return false }
}
return true
}
func solution(_ nums:[Int]) -> Int {
var answer = 0
for i in 0...nums.count - 3 {
for ii in i+1...nums.count - 2 {
for iii in ii+1...nums.count - 1 {
let sum: Int = nums[i] + nums[ii] + nums[iii]
if isPrime(sum) { answer += 1 }
}
}
}
return answer
}
728x90
'알고리즘 문제풀이' 카테고리의 다른 글
[프로그래머스] #139 하샤드 수 (Swift) (0) | 2022.02.18 |
---|---|
[프로그래머스] #138 문자열 내 마음대로 정렬하기 (Swift) (0) | 2022.02.18 |
[프로그래머스] #136 로또의 최고순위와 최저순위 (Swift) (0) | 2022.02.16 |
[프로그래머스] #135 예산 (Swift) (0) | 2022.02.11 |
[프로그래머스] #134 최소직사각형 (Swift) (0) | 2022.02.11 |