220331 다른 사람의 풀이
프로그래머스 77884번 문제
내 풀이
function solution(left, right) {
let arr = [];
let numArr = [...Array(right - left + 1).keys()].map((key) => key + left);
for (let i = left; i <= right; i++) {
count = 0;
for (let j = 1; j <= i; j++) {
if (i % j == 0) {
count += 1;
}
}
arr.push(count);
}
for (let i = 0; i < arr.length; i++) {
if (arr[i] % 2 != 0) {
numArr[i] = -numArr[i];
}
}
return numArr.reduce((tot, cur) => (tot += cur), 0);
}
- left와 right로 받은 수를 배열로 만들었다
- 이중 반복문으로 약수가 나온다면 count에 +1을 해줘서 갯수를 파악했다
- 그 count를 arr라는 빈 배열에 넣어주었다
- 다음 반복문으로 조건문을 사용하여 arr 배열의 요소를 2로 나눴을 때, 0이 아니라면 홀수라는 의미이기 때문에 음수로 바꿔줬다
- reduce 함수로 다 더해줬다
다른 사람의 풀이
function solution(left, right) {
var answer = 0;
for (let i = left; i <= right; i++) {
if (Number.isInteger(Math.sqrt(i))) {
answer -= i;
} else {
answer += i;
}
}
return answer;
}
Author And Source
이 문제에 관하여(220331 다른 사람의 풀이), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@nulee1000/220331-다른-사람의-풀이저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)