작성
·
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)로 작성한 것만 통과될 겁니다.
친절한 답변 감사합니다. 성능상의 고민이 있을때 알고리즘 사이트에서 성능을 체크해보는 좋은 방법도 있네요 감사합니다!!