-
[JS] 약수의 개수와 덧셈이노베이션 캠프/3주차_알고리즘 2023. 6. 21. 10:50
문제
https://school.programmers.co.kr/learn/courses/30/lessons/77884
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 풀이
풀이1. for문 사용
function findDiv(num) { // 약수의 개수 구해주는 함수 (매개변수: 숫자 (int), 리턴 값: 숫자 (int)) let count = 0; // 약수는 1부터 시작 for (let i=1; i<=num; i++) { if (num % i === 0) { // i로 나눈 나머지 값이 0이면 약수 count++; } } return count; } function solution(start, end) { // 1. from() 메소드 사용하여 특정 범위로 이루어진 숫자 배열 생성 // Array.from(arrayLike[, mapFn[, thisArg]]) // arrayLike: 배열로 반환하고자 하는 객체 // mapFn: 배열의 모든 요소에 대해 호출할 맵핑 함수 // thisArg: this로 사용할 값 let numbers = Array.from({length: end-start + 1}, (_, i) => i + start); let result = 0; // 2. for of문 사용하여 배열의 요소에 접근 for (num of numbers) { // 3. 약수의 개수를 구하기 (매개변수: 배열의 요소) let count = findDiv(num); // 4. 약수의 개수에 따라 연산자 다르게 사용하여 값 저장 if (count % 2 === 0) { // 짝수 result += num; } else { // 홀수 result -= num; } } return result; }
풀이2. map 사용
function findDiv(num) { let count = 0; for (let i=1; i<=num; i++) { if (num % i === 0) { count++; } } return count; } function solution(start, end) { let numbers = Array.from({length: end-start + 1}, (_, i) => i + start); let result = 0; numbers.map((num) => { let count = findDiv(num); if (count % 2 === 0) { // 짝수 result += num; } else { // 홀수 result -= num; } return true; }); return result; }
결론
- 성능 차이는 비슷함.
[for문 성능]
ㅋ [map 성능]
728x90'이노베이션 캠프 > 3주차_알고리즘' 카테고리의 다른 글
[JS] 예산 (0) 2023.06.21 [JS] 약수의 합 (0) 2023.06.21 [JS] 키패드 누르기 (0) 2023.06.20 [JS] 소수 만들기 (0) 2023.06.19 [JS] 신규 아이디 추천 (0) 2023.06.19