인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

최다빈님의 프로필 이미지
최다빈

작성한 질문수

자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)

Array.from vs Array

작성

·

769

0

안녕하세요.. 강사님 문득 궁금한점이 있어서 질문을 남깁니다.. 

보통 고정적인 배열을 생성하실때  Array.from을 많이 사용하시는데 저는 Array().fill 이 조금 더 읽기 쉬운 코드라 생각하여 작성하고 있었습니다. 

그러다 문득 궁금한게 고정된 배열을 생성하는 두 가지 방법의 시간 복잡도가 궁금해 졌습니다. 

Array.from({length:n}, () => 0) 의 경우 배열을 생성하면서 값을 채워 넣기에 O(n) 의 시간 복잡도를 갖고
Array(n).fill(0) 의 경우 배열을 생성후 다시 순회하며 값을 채워 넣기에 O(n) + O(n) 의 시간 복잡도를 갖는다고 생각 했습니다.

1. 위에 제가 생각한 시간 복잡도가 맞을까요~?
2. Array(n) 에 대한 시간 복잡도가 O(1) 이다 와 O(n) 이라는 의견이 존재하는데 어떻게 생각하시나요~? 만약 O(1) 의 복잡도이면 1번의 답이 어떻게 될까요?  

읽어주셔서 감사합니다!

답변 1

1

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

실제 리트코드 채점사이트에서 Array.from({length:n}, () => 0)과 Array(n).fill(0) 

비교 채점해보니 Array(n).fill(0)이 훨씬 좋은 성능을 발휘하더라구요. 

 Array(n).fill(0)를 사용했으면 합니다.

리트코드 204번 문제를 에라토스테네스체 방식으로 위 두 가지 배열 생성 방법으로 채점해보세요. 아마 Array(n).fill(0)로 작성한 것만 통과될 겁니다.

 

 

 

최다빈님의 프로필 이미지
최다빈
질문자

친절한 답변 감사합니다. 성능상의 고민이 있을때 알고리즘 사이트에서 성능을 체크해보는 좋은 방법도 있네요 감사합니다!! 

최다빈님의 프로필 이미지
최다빈

작성한 질문수

질문하기