프로그래머스 LEVEL 2(숫자 블록)
-
사용 언어 : javascript
-
해결 날짜 : 2022-11-14
- 해결 방법 :
- 현재 인덱스의 약수 중 자기 자신을 제외한 최대의 약수 값을 배열에 push() 하되, 그 약수가 10,000,000 보다 작아야 함
- 회고 :
- 처음에 단순히 제곱근을 통해 해결하려 하였으나 효율성 실패가 발생해서 문제를 다시 읽어 보았더니
- 문제에 ‘그렙시는 길이가 1,000,000,000인 도로에 1번 블록부터 시작하여 10,000,000번 블록까지 위의 규칙으로 모두 놓았습니다.’ 라는 조건이 있었다.
- 문제를 잘 읽자…
-
코드
const getMaxDivisor = (num) => { if (num === 1) return 0; for (let i = 2; i <= Math.sqrt(num); i++) { if (num % i === 0 && num / i <= 1e7) { return num / i; } } return 1; } function solution (begin, end) { const answer = Array.from({length: end - begin + 1}, () => 0); for (let i = begin; i <= end; i++) { answer[i - begin] = getMaxDivisor(i); } return answer; }
- 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges