MUKER_DEV with iOS

[Swift] Programmers LV1 - 다른 사람의 풀이 본문

카테고리 없음

[Swift] Programmers LV1 - 다른 사람의 풀이

MUKER 2022. 6. 27. 14:04
제 문제 풀이는 최선의 풀이가 아닐 수 있습니다. 문제를 푸는 방법은 다양합니다!

 

문제설명

1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요.

소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다.
(1은 소수가 아닙니다.)

 

제한 조건

  • n은 2이상 1000000이하의 자연수입니다.

 

입출력 예

n result
10 4
5 3

 

문제 분석

1. 

 

Solution.swift

func solution(_ n:Int) -> Int {
    var isPrimeArray = Array(repeating: true, count: n + 1)
    var primeCount = 0 

    isPrimeArray[0] = false
    isPrimeArray[1] = false
    for i in 0...n {
        if isPrimeArray[i] {
            for j in stride(from: i * 2, through: n, by: i) {
                isPrimeArray[j] = false
            }
            primeCount += 1
        }
    }

    return primeCount
}

 

Progremmers Recommend Solution

func solution(_ n:Int) -> Int {
    var primes:[Bool] = [Bool](repeating:false, count:n+1);
    var count = 0;
    for i in 2...n {
        if(!primes[i]){
            count = count + 1;
        }
        for j in 1...(n/i) {
            primes[i*j]=true;
        }
    }
    return count;
}