Swift랑 친해지기/programmers 풀기

[프로그래머스] 소수 찾기(Swift)

데브킹덕 2022. 12. 7. 18:42

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

변수 설정

  • array = 0부터 n까지의 Boolean 타입의 배열 
  • decimalCount = 약수의 갯수

내 풀이

1. 0부터 n까지 true를 가지는 Bool 타입의 배열 array생성

2. 0 과 1은 약수가 아니므로 false로 변경

3. array의 모든 요소를 차례로 접근하여 true(소수)일 경우 소수의 배수들을 모두 false로 변경해준다.

이때 decimalCount를 1증가시켜 소수의 갯수를 증가시킴

ex) 2,4,6,8,10...... 

3,6,9,12....

 

* stride메서드

from 어디부터

through 어디까지(포함) , to어디까지(포함x)

by: 얼만큼 증가 혹은 감소 시킬 것인지

 

 

func solution(_ n:Int) -> Int {
    var array = Array(repeating: true, count: n + 1)
    var decimalCount = 0
    
    array[0] = false
    array[1] = false
    
    for i in 0...n{
        if array[i]{
            for j in stride(from: i * 2, through: n, by: i){
                array[j] = false
            }
            decimalCount += 1
        }
    }
    
    return decimalCount
}