본문 바로가기

전체 글57

JavaScript 기초 1 - 변수 선언 변수 선언 생각해보면 프로그래밍 언어마다 다양한 차이가 있지만 기본적인 차이점이 바로 변수 선언이다. 변수를 어떻게 선언하고 어떻게 저장되는지가 프로그래밍 언어의 특징을 잘 나타낸다고 본다. 에를 들어, C언어의 경우 변수를 선언할 때 변수의 type을 명시해주어야 한다. 하지만 Python의 경우 변수를 선언할 때 type을 명시하지 않아도 된다. 그렇다면 JS는 어떠한 방식으로 변수를 선언하는지 알아보자 var var myName = 'Tuna' var는 JS의 초기에 사용했던 변수 선언할 때 이것이 변수임을 나타내는 것이다. 즉, 더 이상 사용하지 않는 문법이다. 그럼에도 아직 이렇게 사용할 수 있는 이유는 JS의 언어가 발전해온 과정에서 현재까지도 과거 버젼의 JS를 사용하는 웹사이트가 있기에 그.. 2021. 8. 17.
pop(0)와 pop()의 차이 list.pop([i]) 목록에서 지정된 위치에서 항목을 제거하고 반환합니다. 인덱스를 지정하지 않으면 a.pop()이 리스트의 마지막 항목을 제거하고 반환합니다. pop(0)의 시간 복잡도가 O(n)인 이유 먼저 pop()을 살펴보자. 위에서 말했듯이 pop()이 리스트의 마지막 항목을 제거하고 반환한다. 그렇기에 별다른 처리 과정이 필요하지 않기에 pop()의 시간 복잡도는 O(1)이다. 그렇다면 끝 원소가 아닌 그 외의 원소를 pop하는 것은 무엇이 다를까? 우선 python의 list는 배열로 설계되었음을 알아야 한다. 따라서 중간의 원소를 삭제하려면 해당 원소 다음 인덱스 원소들을 앞으로 당겨주어야 한다. 예를 들어, a= [1, 2, 3, 4] 란 list가 있을 때 원소 2를 지우고 싶으면 .. 2021. 8. 17.
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.