공대생의 비망록

[프로그래머스][Lv. 1] 소수 찾기 Swift 풀이 본문

Programming Language/Swift

[프로그래머스][Lv. 1] 소수 찾기 Swift 풀이

myungsup1250 2022. 3. 14. 16:26

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

 

코딩테스트 연습 - 소수 찾기

1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. (1은 소수가 아닙니다.) 제한 조건 n은 2이상

programmers.co.kr

풀이

 

입력으로 주어진 정수 n 부터 1까지의 수 중 소수의 갯수를 반환하는 문제이다.

CS를 전공한다면 누구나 알고리즘 강의에서 한번씩은 배우고 지나가는 '에라토스테네스의 체'를 활용하면 소수 판별이 가능하다.

(참고 : 위키백과_에라토스테네스의 체)

 

끝!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import Foundation
 
var arr = [Bool]()
 
func eratosthenes(_ num: Int) {
    let sqrtNum: Int = Int(sqrt(Double(num))) + 1
    for i in 2...sqrtNum {
        for j in 1...arr.count/i {
            if j == 1 {
                continue
            }
            arr[i * j - 1= false
        }
    }
}
 
func solution(_ n:Int-> Int {
    arr = [Bool](repeating: true, count: n)
    arr[0= false
    eratosthenes(n)
    var cnt = 0
    for num in arr {
        cnt += (num == true ? 1 : 0)
    }
    return cnt
}
cs
Comments