본문 바로가기

개발 공부30

len()의 시간 복잡도가 O(1)인 이유 len()의 시간 복잡도가 O(1)인 이유가 뭘까? 여기서 잠깐 우리가 배열을 하나 선언했다고 가정하자. 그렇다면 배열의 크기를 알기 위해서는 원소가 얼만큼 저장되었는지 세어봐야 한다. 이러한 방식이라면 len()의 시간 복잡도는 O(n)이 더 타당하지 않을까? 이 의문을 해결하면 pop()이 왜 시간 복잡도가 O(1)인지 이해할 수 있다. 파이썬은 어떻게 선언한 배열의 크기를 바로 알 수 있는 걸까? __len__() python에서 len()은 실제로는 __len__() method를 호출하는 함수이다. 이 method는 iterable 데이터 구조 클래스에 미리 설계되어있다. 해당 method는 카운터 역활을 한다. 그래서 데이터가 선언되거나 수정(특정 원소 삭제 및 추가 등)될 때 자동적으로 해당.. 2021. 8. 17.
Python - del list에서 del 사용 del은 인덱스를 사용해서 범위 내의 원소들을 삭제하는 함수이다. 리스트의 원소가 삭제해야할 인덱스 범위 안에 있는지 검사해야하므로 시간복잡도는 O(n)이다. >>> a = [-1, 1, 66.25, 333, 333, 1234.5] >>> del a[0] >>> a [1, 66.25, 333, 333, 1234.5] >>> del a[2:4] >>> a [1, 66.25, 1234.5] >>> del a[:] >>> a [] 변수를 del >>> a = 1 >>> b = a >>> del a >>> a Traceback (most recent call last): File "", line 1, in a NameError: name 'a' is not defined >>> b 1 .. 2021. 8. 16.
Python은 변수를 어떻게 저장하는가? 객체(objects) Python을 배울 때 '객체(Objects)'란 단어가 빈번히 나온다. 사전에서 명시한 Object는 물체를 의미한다. 물체의 특성은 구체적인 형태를 가지고 있다는 것이다. Python에서 정의하는 객체도 이와 유사하다. 객체(Objects)는 파이썬이 데이터(data)를 추상화한 것(abstraction)이며 아이덴티티(identity), 형(type), 값(value)을 갖는다. 위의 내용을 요약하자면 객체(Objects)는 자료형(type)을 가지며 메모리(저장 공간)을 차지한다고 할 수 있다. 즉, 변수를 선언하면 선언한 값이 자료형에 따른 메모리 공간을 차지하며 저장되고 변수는 생성한 메모리 공간의 주소(identity)를 참조한다고 할 수 있다. 따라서 Python의 변.. 2021. 8. 16.
JavaScript 기초 0 - JS의 위대함 시작은 미약하였으나 끝은 창대하리라 JavaScript의 역사를 한 문장으로 표현해보았다. 만약 아래에 정리한 JS의 역사를 읽고 자신의 인생과 비슷하다면 성공한 인생이라고 자부해도 된다. JS의 탄생 JS는 브렌던 아이크라는 천재가 10일만에 만들어낸 프로그래밍 언어이다. 당시 그가 재직중에 있던 Netscape란 회사에서는 자사의 브라우저를 더 상호적인(interactive) 웹사이트로 성장하기를 원했다. 그때에는 HTML과 CSS만으로 웹사이트를 설계했으니 이러한 요구는 당연했다. 회사는 그에게 Scheme이란 프로그래밍 언어를 자사의 브라우저에 넣으라고 지시했지만 그의 상사가 Scheme이 Java와 비슷하다고 언급했고 이에 착안하여 스스로 JS 첫번째 버젼을 10일만에 완성했다. 이것이 JS의 .. 2021. 8. 16.