[Day 4] 자료구조&알고리즘 1

thru·2023년 6월 6일
1

FEDC-TIL

목록 보기
3/21

배열 안에 스파이가 있는 것 같아

오늘 공부한 내용 ⛅

자료구조에 대한 개괄 내용과 시간복잡도, 배열, 연결리스트, 스택에 대해 공부했다.
학교 자구기랑 알고기 시간에 배웠던 기억이 난다.


새롭게 알게된 내용 🌱

컴파일 언어

소스코드를 목적 코드로 컴파일하고 기계어를 읽어 실행시키는 방식으로 동작한다.
규모가 커지면 컴파일이 오래걸리지만 일단 하고나면 기계어를 읽기 때문에 실행속도가 빠르다.
프로그램으로 나타나는 것은 기계어이므로 소스코드의 유출이 어렵다.
운영체제마다 다른 기계어를 갖기 때문에 각각 다른 작업이 필요하다.

스크립트 언어

스크립트 작성 기능을 지원하는 소프트웨어를 제어하기 위한 언어
일반적으로 인터프리터 방식으로 만들어진다. 인터프리터 방식이란 소스 코드를 한 줄 씩 실행하는 방식을 말한다.
실행속도는 느리지만 코드의 수정이 용이하다.
런타임에서 소스 코드가 기계어로 변환된다.

요즘은 python으로 많이 입문하는 것 같던데 컴파일을 못 경험해본 프로그래머도 있지 않을까?


리마인드된 내용 🔨

배열

순서가 있는 컬렉션을 저장할 때 사용하도록 구현된 객체
일반 객체에서 사용하는 방식처럼 사용하면 자바스크립트 엔진 내부 최적화 기법의 이점이 사라진다.
shift와 unshift가 있어서 deque랑 착각 할 수 있지만 배열이므로 해당 두 메소드는 O(n) 시간이 걸린다.
length 속성은 요소의 개수가 아니라 가장 큰 인덱스에 1을 더한 값이다.

수업에서 배열은 메모리가 순차적으로 저장된다고 했지만, 자바스크립트의 배열은 동적 특성으로 인해 밀집성을 보장하지 않는다고 한다.


삼천포 ⚓

trailing 쉼표

객체나 배열의 마지막 요소에 붙어있던 쉼표

const whatIsTrailing = [
  "This?",
  "That?",
  "Next me!", // <= 요거
];

코드 작성 측면에서 요소를 넣고 빼는 게 쉬워져서 넣은 것이라고 한다.

강박증 때문에 넣은 줄..


for ... in

상속된 것을 포함한 모든 열거 가틍한 속성이 순회 대상인데 유사 배열 객체에는 숫자가 키가 아닌 속성들도 있기 때문에 배열에 함부로 사용하면 문제가 생길 수 있다.
애초에 배열이 아닌 객체와 함께 사용할 때 최적화되도록 구현되어있다고 한다.
내부적으로 속성들의 방문 순서가 구현에 따라 달라서 순서가 중요한 배열과는 안 맞는 점도 있다.
실질적으로는 디버깅을 위해 사용되는 경우가 많다고 한다.

순회할 때 파이썬에서 자주 사용하던 용법이라 그런지 자바스크립트 사용할 때도 가끔 손이 간다.


느낀점 🎬

쉬운 내용이라 적을 게 별로 없다고 처음엔 느꼈는데 이것저것 궁금한 것 붙이다보니 그래도 나름 분량은 나온 것 같다. 자료구조를 공부하는데도 자바스크립트만의 특징이 언급되는 걸 보면 특이한 언어긴 하다는 생각이 든다.

썸네일로 적절한 걸 못 찾아서 그렸는데 재미는 있지만 시간이 오래걸린다..


참조

profile
프론트 공부 중

0개의 댓글