본문 바로가기

TIL ( CODESTATES)

(62)
queue, stack - pseudocode, implementation Queue Queue라는 클래스 안에 storage, front, rear 속성이 아래처럼 정의되어 있다. size와 enqueue, dequeue를 구현해 보자. class Queue { constructor() { this.storage = {}; this.front = 0; this.rear = 0; } size() - 큐의 현재 요소 개수를 반환한다. 값들이 저장되는 storage가 객체이니까 키들의 갯수를 세면 될 것 같다. Object.keys(this.storage).length; enqueue(element) - 요소를 큐의 뒤에 추가한다. storage 가장 마지막에 element를 추가한다. 즉 , this.rear에 element를 할당한 후 rear++한다. this.storage[..
구조 분해 할당 - 객체 객체에 대한 구조 분해 할당 역시 mdn 문서를 기본으로 하고, 코드스테이츠 과제를 활용해서 정리해 보았다. let o = {a: 42, b:true}; let {a,b} = o; console.log(a) // 42 console.log(b) // true 변수의 선언과 분리하여 변수에 값을 할당할 수 있다. let a,b; ({a,b} = {p:1, q:2}) // 할당문을 둘러싼 ( ) : 선언 없이 객체 리터럴 비구조화 할당을 할 때 쓰는 구문 // 즉, ( ) 이 없으면 유효한 독립 구문이 아님 // ({a,b} = {p:1, q:2})는 let {a,b} = {p:1, q:2}와 같다. ** ( ) 표현식 앞에는 세미콜론이 있어야 한다. 그렇지 않으면 이전 줄과 연결된다. + 객체의 단축 문법..
새삼 너무 감격스러워서 / Kahoot 복습 (자료 구조) 오늘 수업 때 했던 퀴즈에서 3등/15 을 했다. 별 거 아닐 수 있지만 나 스스로는 너무 감격해서 내 이름이 나왔을 때 셀피를 찍고 싶었지만 조용히 등수만 스크린샷을 찍었다. 그것도. 이머시브 과정 중에 가장 어렵다고 하는 hash table이 포함된 퀴즈에서! 열심히 공부했는데 보람이 있었다. 11시에 애기 재우고 새벽 공부를 한 보람이. 퀴즈 하나가 전부를 의미하는 건 아니지만, 꽤 큰 의미였다. 또 열심히 해 봐야지. JavaScript 공부할 때 mdn공식 문서를 보았던 것처럼 Data Structure에 관한 공식 문서는 없나요? -> 네. 코드스테이츠 강의 내용 외에는 유튜브 같은 데를 참고해 보세요. 많이 본다고 좋은..
Data Structure - stack, queue 컴퓨터는 0과 1만 인식한다. 사람은 0과 1로 사고하지 않으니까 사람과 컴퓨터 사이에 전달할 무언가가 필요한데 그렇게 나온 것이 compiler 이다. 0과 1로 이루어진 데이터에 타입을 지정한다. 2진수 데이터를 특정한 길이 1byte 단위 (bit 8개를 조합한 것)로 나눈다. 이로 특정한 값을 얻어낼 수 있고 이를 문자로 나타낼 수 있다. (ASCII Tabla 에 정의되어 있음) Data Type 데이터 타입 : 하나의 데이터를 어떻게 해석할지 정의한 것 Primitive Type 정수, 실수 문자 논리(참, 거짓) Custom Type : 사용자 정의 타입의 구조체, 클래스 등.. Data Structure 자료 구조 : 여러 데이터들의 묶음을 어떻게 저장하고 사용할지 정의한 것 배열, 트리,..
Data Structure - Linked List, Hash Table Linked List 연결 리스트 크기가 동적인 자료 구조 자료구조를 구성하는 요소 (Node)의 연결로 이루어진다. (배열에서는 element라고 부르고 linked list 에서는 node 라고 한다.) 연결 리스트의 어떤 임의의 지점에 데이터의 추가와 삭제 시 O(1) (상수시간) 의 시간 복잡도를 갖는다. : 이는 추가와 삭제에 대해 O(n) (선형 시간)의 복잡도를 갖는 배열과 다른점이다. 각 노드는 인덱스를 갖지 않는다 : 그래서 특정 데이터를 연결 리스트에서 검색할 때 처음부터 전체 연결 리스트를 조회해야 하고 이는 O(n) (선형시간)의 복잡도를 요한다. 속성 head : 맨 앞 tail : 맨 뒤 current : 현재 탐색 위치 before : 현재 위치 전 num_of_date : 데..
for ... in / for ... of for ... in 객체의 반복을 위해서 만들어졌다. for ... in 을 사용하는 경우 쉽게 객체의 속성을 확인(콘솔이나 다른 방법으로 출력)할 수 있기 때문에 실질적으로 디버깅을 위해 사용될 수 있다. 배열이 데이터의 저장에 있어서는 더 실용적이지만, 키-값 쌍이 선호되는 데이터의 경우(속성이 "key"의 역할을 함) 특정 값을 가진 키가 있는지 확인하려는 경우에 for...in을 사용할 수 있다. for 순서가 중요한 배열의 반복에서는 숫자 인덱스를 사용할 수 있는 for 반복문을 사용하는 것이 좋다. (또는 for ... of를 사용할 수 있다.) for... of 반복가능한 객체 (Array, Map, Set, String, TypedArray, arguments 객체 등을 포함)에 대해서 반..
global , globalThis imm-prep 과제를 하다가 우연히 global 을 입력하려고 했는데 위에 reference 로 globalThis가 나온 걸 보았다. 테스트를 해 보니 globalThis를 적어도 코드가 통과가 되었다. office hour 때 질문할 시간이 생겨서 물어보니 많이 못 들어본 것 같아서 알아보고 얘기해 주신다고 했었다. 그냥 알려주신대로 global만 잘 쓸 걸 괜한 걸 물어봤나 하는 생각이 잠시 들었다. 그리고 오늘 설명해 주신 걸 들으니 물어보길 잘했구나 싶었다. ㅋㅋㅋㅋㅋ 최근에 생긴 따끈따끈한 구문이라고!! 대충이라도 조금 정확하게 알기 위해 내용을 정리했다. global 브라우저에 있는 전역 객체 window 처럼 node 에 있는 전역 객체는 global 이다. __filename, __di..
구조 분해 할당 - 배열 배열이나 객체의 속성을 해체하여 그 값을 개별 변수에 담을 수 있게 하는 JavaScript 표현식 할당문의 좌변에서 사용하여, 원래 변수에서 어떤 값을 분해해 할당할지 정의한다. 과제에서 나왔던 내용을 바탕으로 구조분해할당을 공부해 보려고 한다. (MDN 순서를 따름) 내가 답을 채워 넣었을 때 했던 생각을 그대로 정리해보고 나중에 피드백을 받으면 수정할 예정이다. 1. 배열 구조 분해 기본 변수 할당 describe('구조 분해 할당(Destructing Assignment)에 관해서', () => { it('배열을 분해합니다', () => { const array = ['code', 'states', 'im', 'course'] const [first, second] = array // 할당문의 좌..