글만 잔득 길지 문제는 쉬운 문제다
(
단, 1과 약수를 구할 때 참여한 숫자 본인은
무조건 약수 안에 들어가기 때문에
count를 2로 설정하고,
문제를 풀어야 "시간 초과"에 안 걸린다.
)
let result = 1
로 1번 기사는 스킵한다.
for(i = 2; i <= number; i++)
2 ~ number 기사의 무기를 보기 위해 순회한다.
let count = 2;
1과 본인은 약수에 먼저 포함시킨다
(수행시간 단축을 위해서)
let temp = Math.sqrt(i);
for(let j = 2; j <= temp; j++)
으로 root(숫자)값 까지 순회할 수 있게
반복문을 설정한다.
(수행시간 단축을 위해 사용)
if(i % j === 0)
{
if(temp === j) count++;
else count += 2;
}
나누어 떨어질 때
9의 약수 : 3 같이
중복된 수이면
나누어 떨어지게 만든 수와 몫이
같으므로 count를 1 증가시켜준다.
아니면 count + 2로
나누어 떨어지게 만든 수와 몫이
존재하므로 count를 2 증가시켜준다.
if(limit < count) result += power
else result+= count
협약으로 제한 초과이면
협약된 power를 더해주고,
아닐 경우 count를 더해줘
필요한 강철 개수를 구한다.
제출한 코드 :
function solution(number, limit, power) {
let result = 1;
for(i = 2; i <= number; i++)
{
let count = 2;
let temp = Math.sqrt(i);
for(let j = 2; j <= temp; j++)
{
if(i % j === 0)
{
if(temp === j) count++;
else count += 2;
}
}
if(limit < count) result += power
else result+= count
}
return result
}
'문제 풀기 > JavaScripts' 카테고리의 다른 글
62문제. 옹알이(2)(난이도 10) (0) | 2024.08.23 |
---|---|
문제 61. 로또의 최고 순위와 최저 순위(난이도 5) (0) | 2024.08.20 |
문제 59. 덧칠하기(난이도 10)(new Array 와 fill) (0) | 2024.08.19 |
문제 58. 소수 만들기(난이도 10) (0) | 2024.08.19 |
문제 57. 모의고사 완전 탐색 (난이도 7) (0) | 2024.08.19 |