inflearn logo
강의

Khóa học

Chia sẻ kiến thức

CS Knowledge Essentials | Mạng lưới thiết kế mẫu Hệ điều hành Cơ sở dữ liệu Cấu trúc dữ liệu

동적배열 질문있어요

235

3831568

15 câu hỏi đã được viết

0

c++기준으로 자료구조를 설명해주고 계신데 자바스크립트에는 동적배열, 정적배열의 구분이 없는거죠?

없다면 설명 내용으로 보아서는 동적배열에 가깝다고 생각하면 될까요?

그리고 동적배열에서 맨 앞 요소 삽입/삭제시 시간복잡도가 O(1)이라고 되어있는데 자바스크립트에서는 shift() unshift() 사용 시 O(n)으로 알고 있습니다. 제가 알고 있는 것이 맞는건가요?

운영체제 기술면접 면접

Câu trả lời 1

1

kundol

안녕하세요 ㅎㅎ

네 동적배열 vector를 기반으로 자바스크립트의 Array를 대응해서 생각하시면 됩니다.

자바스크립트의 Array의 특징을 정하는 ECMA의 규격을 잠깐볼까요?

23.1.3.27 Array.prototype.shift ( )

This method removes the first element of the array and returns it.

It performs the following steps when called:

  1. 1. Let O be ? ToObject(this value).

  2. 2. Let len be ? LengthOfArrayLike(O).

  3. 3. If len = 0, then

    1. a. Perform ? Set(O, "length", +0𝔽, true).

    2. b. Return undefined.

  4. 4. Let first be ? Get(O, "0").

  5. 5. Let k be 1.

  6. 6. Repeat, while k < len,

    1. a. Let from be ! ToString(𝔽(k)).

    2. b. Let to be ! ToString(𝔽(k - 1)).

    3. c. Let fromPresent be ? HasProperty(O, from).

    4. d. If fromPresent is true, then

      1. i. Let fromVal be ? Get(O, from).

      2. ii. Perform ? Set(O, to, fromVal, true).

    5. e. Else,

      1. i. Assert: fromPresent is false.

      2. ii. Perform ? DeletePropertyOrThrow(O, to).

    6. f. Set k to k + 1.

  7. 7. Perform ? DeletePropertyOrThrow(O, ! ToString(𝔽(len - 1))).

  8. 8. Perform ? Set(O, "length", 𝔽(len - 1), true).

  9. 9. Return first.

이런식으로 되어있습니다. (shift)의 경우

앞의 설명처럼 따로 시간복잡도를 알려주지는 않습니다. 지금 보시면 k < len일 때까지 반복하는 것으로 최악의 경우 O(N)임을 알 수 있습니다.

또한, 배열의 다른 메서드의 시간복잡도도 공부하시라고 올려드립니다.

  • push() : O(1), 최악 - O(N) / array 재할당이 발생

  • pop() : O(1)

  • shift() : O(N)

  • slice() : O(N)

  • sort() : O(NlogN)

다만, 자바스크립트로 만약에 코테를 한다고 했을 때 array의 shift, unshift 등의 메서드에 관한 시간복잡도가 영향을 미치게 설계를 하지는 않아서 크게 상관하지는 않으셔도 됩니다.

또 질문 있으시면 언제든지 질문 부탁드립니다.

감사합니다.

강사 큰돌 올림.

안녕하세요 선생님, API 실습 2 강의를 듣다 궁금한 점이 생겨 질문 드립니다.

0

535

2

JSON으로 사이트맵

0

487

1

브라우저 렌더링 부분 교재 관련 질문입니다!

0

460

2

교제를 따로 사야하나요?

0

1962

1

클라우드 아키텍쳐에서 토폴로지 설계

1

704

1

로컬스토리지, 세션 스토리지 용량 초과하면 어떻게 되나요?

0

1540

1

학습 순서가 정해져있는건지 궁금합니다.

0

510

1

TCP/IP 4계층, OSI 7계층에 대해 질문드립니다.

0

955

1

서브넷마스크 할당 퀴즈가 헷갈립니다

1

466

1

Linked List의 시간 복잡도에 대한 질문입니다

0

478

1

HTTP 메서드 #1. 질문있습니다.

0

508

1

jwt 토큰

0

746

1

해당 질문에 대한 답변 예시 중에 제가 본 것 중 제일 고품질이네요

0

426

2

UDP의 고정길이에 대하여 질문이 있습니다.

0

309

1

팩토리 패턴의 의존성 주입과 관련해서 질문이 있습니다!

0

686

1

질문 잇워오

0

381

1

안녕하세요 axios DIP 사례의 화살표가 잘 이해가 되지 않아 질문드립니다

0

304

1

책과 강의 교안.. 어떤 것에 비중을 두어야 하나요?

0

488

1

HTTP3 UDP통신

0

970

1

[오탈자 문의]

0

258

1

attribute, field, property의 명확한 차이점이 궁금합니다.

1

1407

1

싱글톤 패턴에서 정적 멤버 방식과 정적 블록 방에서 정적 블록 방식은 final이 없는 이유

0

332

1

Json이 프로그래밍 언어와 플랫폼에 독립적인 이유가 뭔가요?

0

429

1

질문!

0

256

1