데브 코스/TIL

    [TIL]선언형 프로그래밍.

    배운 내용 명령형 프로그래밍 컴퓨터가 수행할 명령을 순서대로 써 놓은 것이다. "어떻게" 구현하는가를 디테일하게 기술하는 것에 관점이 가있다. 선언형 프로그래밍 "무엇"에 집중하고 나머지는 컴퓨터에게 맡긴다. 무엇을 표현하고 싶은지 알기 편하고 확장성이 좋기 때문에 선언형을 지향하는 측면이 있다. 고차 함수를 사용할 때 단계별로 끊어서 생각해보자. 컴포넌트 기능이나 동작을 한데 묶어서 다른 함수들에 의존하지 않도록 구현해보자. 컴포넌트를 조작할때 컴포넌트의 상태를 정의해서 사용하자. 고차 함수, 컴포넌트를 구성하면서 이들의 파이프 라인에 대해서 익숙해지고 이해도를 높여야 한다. 보충 해야할 내용들 실제로 기능을 구현할 때 컴포넌트 단위로 분리해서 구성하는 연습을 해보자. React처럼 vanilla js..

    [TIL]Day9

    배운 내용 this는 함수를 선언 할 때가 아니라 함수가 실행되는 시점에 결정되는게 일반적이다. new 키워드를 사용하면 this는 새로 생긴 객체를 가리킨다. 빈 객체 생성 및 this 바인딩. 이후 생성자 함수 내에서 사용되는 this는 이 빈 객체를 가리킨다. this를 통한 프로퍼티 생성 생성된 객체 반환 객체 리터럴 방식의 경우, 생성된 객체의 프로토타입 객체는 Object.prototype이다. 생성자 함수 방식의 경우, 생성된 객체의 프로토타입 객체는 객체이름.prototype이다. this외에도 apply, call, bind를 사용할 수 있다. 내부 함수는 일반 함수, 메소드, 콜백함수 어디서 선언되었든 관계없이 this는 전역객체를 바인딩한다. 메소드의 내부의 this는 해당 메소드를 ..

    [TIL]Day8

    배운 내용 HTML Hyper Test MarkUp Language. 로직이 실행되지 않기때문에 프로그래밍 언어는 아니다. 구조(Structure)와 의미(Semantic)로만 남아있다. CSS Cascading Style Sheets 마크업 언어가 실제 표시된는 방법을 기술하는 스타일 언어다. ID와 Class 이름을 불러오는 방식의 차이가 있다. 클래스명은 앞에 마침표(.)를 찍는다. 아이디는 앞에 샵(#)을 사용한다. 클래스는 중복 사용이 가능하지만 아이디는 한 페이지에서 딱 한번 사용해야한다. 중복 ID가 여러 개 존재할 경우 정상적으로 작동하지 않는다. 한 요소에 여러개의 클래스명이 적용될 수 있다. 그러나 아이디는 하나만 적용이 가능하다. 여러개의 id를 적용할 경우 정상적으로 작동하지 않는다..

    [TIL]Day7

    배운 내용 백트래킹 모든 경우의 수를 탐색한다. 적절한 조건을 사용하여 가지치기(Pruning)해야한다. 자바스크립트는 재귀 효율이 나쁘기 때문에 DFS를 구현할 경우 스택을 이용하자. 동적계획법 큰 문제를 작은 문제들로 나누어서 해결한다. 특정한 알고리즘이 아니라 문제 해결 방식을 의미한다. 메모이제이션/타뷸레이션 메모이 제이션 : 하양식 접근법으로 결과물을 메모리에 저장해 필요할때 꺼내 쓴다. 타뷸레이션:상향식 접근법으로 미리 다 계산해두고 꺼내쓴다. 문제를 작은 문제들로 나누거나 일정한 패턴이 보인다면 동적계획법을 생각해보자. 보충 해야할 내용들 백트래킹, DP 모두 개념자체는 어렵지 않으나 실제로 문제에 적용하기에 어렵다. 특히나 DP의 경우 유형도 난이도도 제가각 이기때문에 많은 시간이 요구된다..

    [TIL]Day6

    배운 내용 BFS / DFS 그리디 For ..in / For ..of / forEach의 특징과 차이점에 대해서 알아봤다. [실습] 여행경로 풀이를 정리하려고 했는데 다른 코드를 붙여넣기 하고 구경하다가 원래의 내 코드가 사라졌다...(ㅠ..) sort함수는 [[a,b], [b,c], [c,d]] 와 같은 2차원 배열에도 별다른 설정없이 사용할 수 있다. 다음과 같이 그래프를 생성할 수 있다. const graph = {} for (const [src, dest] of tickets) { if (graph[src] === undefined) { graph[src] = []; } graph[src].push(dest); } 보충 해야할 내용들 DFS의 경우 stack을 사용하는데 stack은 top에서부..

    [TIL]Day5

    배운 내용 Tree 이론과 구현. 전위, 중위, 후위 순회를 구현해본다. Heap 이론과 구현. Trie 이론과 구현. 트라이는 문자열을 저장하고 효율적으로 탐색하기 위한 트리 형태의 자료구조이다. 트리의 루트에서부터 자식들을 따라가면서 생성된 문자열들이 트라이 자료구조에 저장되어있다. 빠르게 탐색이 가능하지만 각 노드에서 저장하고 있는 정보가 많을 수 있기때문에 저장 공간의 크기가 크다는 단점이 존재한다. 검색어 자동완성, 사전에서 찾기 그리고 문자열 검사와 같은 곳에 사용할 수 있다. Sorting 이론과 구현. 보충 해야할 내용들 트라이에 대해서 더 알아보자. 트라이를 구현할때 각 노드의 자식들에 접근할 수 있는 여러가지 방법을 생각해보자. 자동완성을 구현할때 예외로 처리해야할 상황에 대해서 생가해..

    [TIL]Day4

    배운 내용 Git과 GitHub에 관하여. Queue Hash Table & Hash Collision 선형 탐사법 제곱 탐사법 이중 해싱 분리 연결법 그래프 보충 해야할 내용들 아직 Git과 GitHub에 대해서 제대로 숙지하지 못하였다. 연습해 볼 수 있는 사이트를 찾았고, 연습을 좀 더 해본뒤에 Git과 관련된 내용을 따로 정리해야겠다.

    [TIL]Day3

    배운내용 자료구조의 종류 시간 복잡도 계산(빅오O()) 배열 연결리스트 스택 보충 해야할 내용들 Linked List 구현시 예외로 처리해야 할 것들이 있는지 더 생각해보자. DLL 구현 시 remove 함수에 대해서 더 생각해보자. Singly Linked List, Doubly Linked List, Circular Linked List를 어떻게 활용할 수 있을지 생각해보자. 자료구조를 사용할때 자료구조에 대해서 정확하게 알고있다면 실제로 해당 자료구조를 사용하지 않아도 마치 사용한 것 같은 효과를 낼 수 있다. 구현 해본 Doubly Linked List. /* DLL 구현. * Node : prev, next, value 필요. * DLL 본체 : head , tail , length * DLL ..