채널톡 아이콘

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

최다빈님의 프로필 이미지

작성한 질문수 1

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

Array.from vs Array

작성

·

798

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)로 작성한 것만 통과될 겁니다.

 

 

 

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

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