본문 바로가기
📖 Coding Test/Programmers LV.0

[프로그래머스 LV.0] 합성수 찾기

by hyebin (Helia) 2022. 12. 29.

합성수 찾기

문제 설명

약수의 개수가 세 개 이상인 수를 합성수라고 합니다. 자연수 n이 매개변수로 주어질 때 n이하의 합성수의 개수를 return 하도록 solution 함수를 완성해 주세요.

제한 사항

  • 1 ≤ n ≤ 100

입출력 예

n result
10 5
15 8

입출력 예 설명

입출력 예 #1

  • 10 이하 합성수는 4, 6, 8, 9, 10로 5개입니다. 따라서 5를 return 합니다.

입출력 예 #2

  • 15 이하 합성수는 4, 6, 8, 9, 10, 12, 14, 15로 8개입니다. 따라서 8을 return 합니다.

제출

import Foundation

func solution(_ n:Int) -> Int {
    if n < 4 {return 0}
    
    var answer = 0
    for i in 4...n{
        for j in 2..<i{
            if i%j == 0 {
                answer += 1
                break
            }
        }
    }
    
    return answer
}
n이 4보다 작다면 0을 반환 (1은 약수의 개수가 1개, 2,3은 소수이기 때문에 약수의 개수가 2개)
4부터 n까지 나누어 떨어지는 수가 있다면 answer를 1 증가

다른 풀이

import Foundation

func solution(_ n:Int) -> Int {
  return (1...n).filter { i in (1...i).filter { i % $0 == 0 }.count > 2 }.count
}
반응형

댓글