본문 바로가기

Algorithm/Javascript로 코테 준비하기

[JS로 코테 준비하기] 7. 프로그래머스 - 약수 구하기 (feat. 1부터 n까지 배열)

반응형

 

https://school.programmers.co.kr/learn/courses/30/lessons/120897

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

1부터 n까지 배열 만들기

숫자 n이 주어졌을 때, 1부터 n까지 탐색이 필요한 경우 for문을 대신하는 방법들

for(let i = 0; i <= n; i++){ //whatever }

 

 

1. 0부터 n-1 [0, 1, 2, ... , n-1]

Array.from(Array(n).keys());
[...Array(n).keys()];

 

 

2. 1부터 n [1, 2, ... , n-1, n]

Array.from(Array(n), (_, i) => i + 1));
Array.from({length: n}, (_, i) => i + 1);
[...Array(n).keys()].map(i => i + 1);
[...Array(n+1).keys()].slice(1);

 

참고) i부터 j [i, i+1, ..., j-1, j]

[...Array(j + 1).keys()].slice(i);

 

 

3. 비교

무엇을 사용할까?

 

Array.from() vs. spread operator

  • Array.from()은 shallow copy(얕은 복사)로, 인자로 들어온 값의 메모리 주소를 가리킨다.
  • spread operator는 deep copy(깊은 복사)로, 값 자체를 복사해 별도의 메모리 주소를 가진다.

 

사실 배열 생성을 위한 단계라 위 차이는 영향을 미치지 않으므로, 간단한 [...Array(n).keys()][...Array(n+1).keys()].slice(1)를 애용할 예정이다.

 

 

 

Reference

반응형