[배열]

배열은 값 또는 변수 엘리먼트의 집합으로 구성된 구조로, 하나 이상의 인덱스 또는 키로 식별된다.

배열은 메모리 주소를 바로 계산해서, 즉시 접근이 가능한 O(1)의 자료구조이다.

보통 인트는 4로 고정되어 있고, 4씩 증가하며 연속적으로 할당되는 구조이다. (정적배열)

[메모리와 포인터]

32비트 머신의 포인터는 32비트이며 포인터는 메모리 영역을 1바이트 단위로 가리티는 주소이다.

[동적배열]

파이썬에서는 리스트가 동적 배열 자료형이다. 파이썬은 정적 배열은 제공하지 않는다.

미리 초깃값을 작게 잡아 배열을 생성하고, 데이터가 추가 되면서 꽉 채워지면, 늘려주고 모두 복사하는 식이다.

대게는 더블링이라 하여 2배씩 늘려주게 된다. 파이썬은 초박에는 2배씩 늘려주지만, 뒤에서는 조금만 늘려간다.

조회는 동일하게 O(1)의 시간에 가능하다. 하지만, 더블링이 필요할 만큼 공간이 차면, 새로운 메모리 공간에 더 큰 크기의 배열을 할당하고 기존데이터를 복사하는 작업이 필요하므로 O(n)비용이 발생한다. 최악의 경우 삽입시 O(n)이 필요하다.

1)[두 수의 합-하, 배열]

덧셈하여 타겟을 만들 수 있는 배열의 두 숫자 인덱스를 리턴하라.

https://leetcode.com/problems/two-sum/

[팁!!!]

-브루트 포스로 계산