⚙️ 알고리즘/프로그래머스

[Swift] 프로그래머스 / 코딩테스트 입문 - 합성수 찾기

dev_zoe 2023. 1. 6. 21:30
반응형

문제

 

내 풀이

func solution(_ n:Int) -> Int {
    var count = 0
    var answer = 0
    
    for i in 1...n {//1부터 10까지
        for j in 1...i{
            if i%j == 0{ 
                count += 1
            } 
        }
    
        if count >= 3 {
            answer += 1
        }
        count = 0
    }
    return answer
}

 

 

고차함수 활용 풀이

    return (1...n).filter { i in
        (1...i).filter { i % $0 == 0 }.count >= 3 }.count

1) (1...n).filter : 1부터 n까지의 range에서 다음과 같은 조건으로 필터링하겠다.

2) i in (1...i).filter { i % $0 == 0 : 1부터 n까지 반복해서, 차례대로 (1...n)으로 나누었을 때 나누어떨어지는 수들로 필터링하겠다.

3) count >= 3 : 그랬을 때 필터링된 배열의 원소의 갯수가 3개 이상인 것들로만 1) 배열 필터링

4) .count : 3)에 의해 필터링된 배열의 원소 count

반응형