bass
article thumbnail
JS 정리
JS 2023. 8. 23. 14:40

기본형 / 참조형 데이터는 기본형이거나 참조형이다. 기본형 기본형은 원시값의 주소를 가리킨다. 값을 바꿔도 원시값을 가리키는 주소가 바뀌는 것이지, 같은 주소 안에서 원시값이 바뀌는 것이 아니다. 그래서 주소안의 값은 불변으로 여긴다. a = 1; b = a; a, b 둘다 '1이 담겨있는 주소'를 가리키고 있다. a === b; 둘은 같은 주소이기 때문에 true이다. a = 2; 새로운 주소에 2를 할당하고 a가 그곳의 주소를 가리키게 된다. 이때, 1을 담고있는 공간에는 어떠한 변화도 없다. (즉, 불변하다) 후에 아무도 1을 가리키지 않는다면 각 JS 엔진의 GC가 적당한 시기에 1을 담고있는 공간을 비운다. 참조형 참조형은 데이터가 아니라 그룹의 주소를 가리킨다. 그룹의 주소는 바뀌지 않지만 그..

article thumbnail
JavaScript / shift 안쓰고 BFS 구현하기
JS 2023. 1. 29. 16:29

JS에서의 큐? 자바스크립트의 리스트는 큐의 디큐(dequeue) 역할을 하는 shift() 함수가 존재하기는 합니다만, 시간 복잡도가 O(n)입니다. 사실상 시간적으로는 디큐의 역할을 하지 못하는 것입니다. index를 활용해서 큐의 시작점을 바꿀 수 있지만, 이 또한 공간적으로 디큐의 역할을 하지 못합니다. 그렇다고 연결리스트로 큐를 구현하기에는 너무 코드가 길어지고 코딩 테스트에서 활용하기 어렵습니다. index와 delete 연산으로 해결하기 delete연산은 시간복잡도가 O(1)입니다. 다만 리스트의 길이가 줄어들지 않습니다. const list = [0, 1, 2]; delete list[0]; list // [ , 2, 3 ] list[0] // undefined 그래서 head 역할을 하는..