728x90
반응형
이번 문제에 대한 자세한 사항은 다음 링크를 참고하길 바란다.
이번 문제는 비교적 간단히 풀었다. 나의 경우 left부터 right까지의 수가 담긴 객체를 선언하여 해결하였다.
- for문을 돌면서 left부터 right까지 수를 obj의 키로 설정하고 각 키의 값으로 0을 할당
- 이중 for문을 돌면서 1부터 i까지의 수를 i에 나누어 나머지가 0일 경우(약수) obj의 해당 키 값 ++
- 완성된 obj를 for문으로 돌면서 약수의 개수가 짝수일 경우 정답에 더하고, 홀수일 경우 정답에서 뺌
Solutions
Solution 1.
function solution(left, right) { /* My Solution */ const obj = {}; let answer = 0; for (let i = left; i <= right; i++) { if (!obj[i]) obj[i] = 0; for (let j = 1; j <= i; j++) { if (i % j === 0) { obj[i]++; } } } for (const key in obj) { if (obj[key] % 2 === 0) answer += +key; else answer -= +key; } return answer; }
Solution 2.
function solution(left, right) { /* Simpler Ver. */ let answer = 0; for (let i = left; i <= right; i++) { let count = 0; for (let j = 1; j <= i; j++) { if (i % j === 0) count++; } if (count % 2) answer -= i; else answer += i; } return answer; }
728x90
반응형
'👩💻 Programming > Coding Test 문제 풀이' 카테고리의 다른 글
[Programmers] level 1: 예산 by JavaScript (0) | 2022.07.07 |
---|---|
[Programmers] level 1: 3진법 뒤집기 by JavaScript (0) | 2022.07.07 |
[Programmers] level 1: 폰켓몬 by JavaScript (0) | 2022.07.06 |
[Programmers] level 1: 체육복 by JavaScript (0) | 2022.07.06 |
[Programmers] level 1: 모의고사 by JavaScript (0) | 2022.07.04 |
댓글