코딩테스트/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;
}