코딩테스트/LV. 1

LV. 1 :: 합성수 찾기

KUROMI98 2023. 1. 24. 05:55

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

 

프로그래머스

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

programmers.co.kr

 

function solution(n) 
{
    var arr = [];
    var array = [];
    var count = 0;
    
    for (j=1; j<=n; j++)
    { // j가 1부터 n일때까지, 
    // -------------------------------
        for (i=1; i<=j; i++) 
        { // i부터 j까지 모든 i에 대해,
            if (j%i==0){arr.push(i);}
            // j가 i로 나누어떨어지면 i를 arr에 넣는다.
            var len= arr.length;
            // len은 j의 약수의 개수이다.
        } 
    // -------------------------------
        array.push(len)
        // 약수의 개수를 array에 넣는다.
    }
    
    for (i=array.length-1; i>0; i--)
    {   // array가 다 합쳐져버려서, array의 원소 전 꺼를 빼준다.
        array[i] = array[i] - array[i-1];
        // 이로써 array는 1부터 n까지의 약수의 개수를 나타내주는 배열이 된다.
        // 즉. array[0]은 1의 약수의 개수, array[1]는 2의 약수의 개수... 이렇게.
    }
    
    for (i=array.length-1; i>0; i--)
    {   // 약수의 개수가 3개 이상인 원소들의 개수를 세 count에 넣음
        if (array[i]>=3) {count += 1;}
    }
     
    return count;
}

230916 C++

#include <string>
#include <vector>

using namespace std;

int solution(int n) {
    int answer = 0;
    int count = 0;
    for (int i=1; i<=n; i++){
        for (int j=1; j<=i; j++){
            if (i%j==0) count++;
        }
        if (count>=3) answer++;
        count = 0;
    }
    return answer;
}