javascript
-
[프로그래머스 Level 1] 약수의 합알고리즘 문제풀이 2020. 1. 7. 21:13
문제 설명 정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요. 제한 사항 n은 0 이상 3000이하인 정수입니다. 입출력 예 n return 12 28 5 6 이 문제는 비교적 해결하기 쉬운 문제였지만, for문의 반복 범위를 고려하지 않으면 시간초과로 실패할 수 있는 문제이다. 해답은 [프로그래머스 Level 1] 소수찾기와 동일하다. 어떤 수 n은 n의 제곱근 이하의 수와 그 이상의 수의 곱으로 표현이 가능하다. 그러므로 i를 n의 제곱근까지만 반복해주면 이 문제를 시간복잡도 O(root n)으로 해결 가능하다. function solution(n) { var factor = new Set(); if(n == 0){ return 0; } for(var i ..
-
값에 의한 vs 참조에 의한Web/JavaScript 2020. 1. 6. 20:37
자바스크립트를 공부하다 보면 C언어에서 매개변수로 값을 줄 때와 포인터를 줄 때처럼 명확한 표현 방식이 없음을 마주할 때가 있다. 그렇다면 어떻게 자바스크립트는 이 둘을 구분할까? 데이터 값 조작 방식으로 값에 의한(by value) 방식과 참조에 의한(by reference) 방식이 존재한다. (이하 값, 참조) 값을 통해 조작하는 경우는 기본 타입이라고 볼 수 있다. 예시로 숫자, 불리언, 문자열이 있다. 참조를 통해 조작하는 경우는 참조 타입인데, 객체(배열, 함수 등)가 그러하다. 위 두 가지의 차이점을 보면 참조 타입은 메모리의 크기가 불분명하기 때문에 메모리를 비효율적으로 많이 사용하는 경우에 속한다. (문자열은 이후에 다시 설명) var n = 1; // 숫자, 문자열, 불리언은 기본 타입 ..