전체 글

전체 글

    [알고리즘] Graph / Tree / BST

    1. Graph 컴퓨터 공학에서 이야기 하는 자료구조 그래프는 전혀 다른 모습을 가지고 있습니다. 자료구조의 그래프는 마치 거미줄처럼 여러개의 점들이 선으로 이어져 있는 복잡한 네트워크 망과 같은 모습을 가지고 있습니다. 그래프는 여러개의 점들이 서로 복잡하게 연결되어 있는 관계를 표현한 자료구조입니다. 직접적인 관계가 있는 경우 두 점 사이를 이어주는 선이 있습니다. 간접적인 관계라면 몇 개의 점과 선에 걸쳐 이어집니다. 하나의 점을 그래프에서는 정점(vertex)이라고 표현하고, 하나의 선은 간선(edge) 이라고 합니다. 알아둬야 할 그래프 용어들 무(방)향그래프(undirected graph): 서울에서 부산으로 갈 수 있듯, 반대로 부산에서 서울로 가는것도 가능합니다. 단방향(directed) ..

    [자료구조] 자료구조 기초 Stack, Queue

    자료구조? 자료구조란 여러 데이터들의 묶음을 저장하고, 사용하는 방법을 정의한 것입니다. 자료구조는 자료의 집합을 구조화하고, 이를 표현하는 데에 초점이 맞춰져 있습니다. 이미 자료구조를 알게 모르게 많이 접했습니다. 사람이 사용하기에 편리하려고, 사용하기 좋으려고 만들어진 것이 자료구조입니다. 자주 등장하는 네 가지의 자료구조 Stack, Queue, Tree, Graph 대부분의 자료구조는 특정한 상황에 놓인 문제를 해결하는 데에 특화되어 있습니다. 따라서 많은 자료구조를 알아두면, 어떠한 상황이 닥쳤을 때 적합한 자료구조를 빠르고 정확하게 적용하여 문제를 해결할 수 있습니다. 이것은 문제 해결력을 필요로하는 알고리즘 테스트(코딩 테스트)와 굉장히 밀접한 연관성이 있습니다. 특정 문제를 해결하는 데에..

    [자료구조/알고리즘] JSON, Tree UI, 재귀함수 과제

    JSON의 탄생 배경 JSON은 JavaScript Object Notation의 줄임말로, 데이터 교환을 위해 만들어진 객체 형태의 포맷입니다. 네트워크를 통해, 어떤 객체 내용을 다른 프로그램에게 전송한다고 가정하겠습니다. 이 객체 내용을 일종의 메신저 혹은 채팅 프로그램에서 쓰는 하나의 메시지 입니다. const message = { sender: "김코딩", receiver: "박해커", message: "해커야 오늘 저녁 같이 먹을래?", createdAt: "2021-01-12 10:10:10" } 메시지 객체가 전송 가능하려면, 메시지를 보내는 발신자와 메시지를 받는 수신자가 같은 프로그램을 사용하거나, 문자열처럼 범용적으로 읽을 수 있는 형태여야 합니다. 전송가능한 조건 (transfera..

    [알고리즘] 재귀함수

    재귀는 재귀 (원래의 자리로 되돌아가거나 되돌아옴) 어떻게 보면은 무한 반복문과 굉장히 비슷합니다. 살면서 재귀라는 말을 듣기 어려운거 같은데 쉽게 생각하면 반복문과 다를게 없습니다. 특히 무한 반복문 while이나 재귀함수나 탈출 조건을 if문으로 설정 해주어야 하는 것 처럼.. 항상 느끼는 거지만, 어렵게 생각하면 한없이 어려운 것 같습니다. 그렇기 때문에 많이 해보아야 해결 되는 문제인듯 합니다. 재귀를 사용할 때 1. 주어진 문제를 비슷한 구조의 더 작은 문제로 나눌 수 있는 경우 2. 중첩된 반복문이 많거나 반복문의 중첩 횟수(number of loops)를 예측하기 어려운 경우 ex) 펙토리얼 재귀함수 function fac(n){ if(n===1){ // 탈출 조건 return 1; } re..

    [JS] 객체 지향

    1. 객체지향 프로그래밍란? 객체 지향 프로그래밍이라는 패러다임이 등장하기 전, 절차 언어가 있었습니다. 우리는 앞서 모든 것을 절차로 생각해왔습니다. 기껏해야 함수로 이동하는 것이 전부였죠. 초기의 C, 포트란같은 언어들은 객체 지향의 개념이 없는 절차 언어(순차적인 명령의 조합)였습니다. 그러나, 객체 지향 프로그래밍이라는 패러다임이 등장하면서, 단순히 별개의 변수와 함수로 순차적으로 작동하는 것을 넘어, 데이터의 접근과, 데이터의 처리 과정에 대한 모형을 만들어 내는 방식을 고안해냈습니다. 따라서, 데이터와 기능이 별개로 취급되지 않고, 한번에 묶어서 처리할 수 있게 되었습니다. 속성과 메소드가 하나의 "객체"라는 개념에 포함되며, 이는 자바스크립트 내장 타입인 object(이하, object li..

    코드스테이츠 후기 (한 달 동안 느낀 점 / Section 1 후기)

    코딩에 대한 교육은 정말 많은데, 국비도 많이 알아 봤지만 저는 많은 돈을 들여서라도 하게 되는 이유는 다른 교육보다 온전히 몰입을 할 수 있는 장점과, 체계적인 시간표, 그리고 집 밖에 나가지 않아도 되는 장점이 있습니다. 그리고 계속해서 수료 후에 관리해주는 점도 중요한 장점이라 생각 됩니다. 제 주관과 한 달동안의 경험에 비추어 코드스테이츠에 대한 생각을 적어 보려 합니다. 저는 생각보다 일을 몰아서 하거나 게으른 순간이 오는 경우가 있습니다. 바로 할만하거나 쉽다고 느껴졌을 때 또는 흥미가 떨어졌을 때, 굉장히 미루는 습관이 있습니다. 그러한 부분을 코드스테이츠를 하면서 많이 잡아주는 것 같습니다. 우선 교육내용을 접해보지 않았으면 굉장히 시간표가 여유롭지 않고 따라가기 급급 할 수 가 있습니다...

    [JS] 고차함수

    이차방정식 마냥 이차함수라 하기는 이상하니까 고차함수라고 표현 한것 같습니다. 결국 함수안에 함수를 넣은 형태입니다. 스코프, 클로저와 비슷하게.. 자바스크립트에 특별한 대우를 받는 일급 객체(first-class citizen)가 있습니다. 대표적인 일급 객체 중 하나가 함수입니다. (자바스크립트가 나온 시점을 고려했을 때,) 자바스크립트에서 함수는 아래와 같이 특별하게 취급됩니다. 변수에 할당(assignment) 할 수 있다. 다른 함수의 인자(argument)로 전달될 수 있다. 다른 함수의 결과로서 리턴될 수 있다. 함수를 변수에 할당할 수 있기 때문에, 함수를 배열의 요소나 객체의 속성값으로 저장할 수 있습니다. 이는 함수를 데이터(string, number, boolean, array, ob..

    [JS] DOM

    DOM은 쉽게말해서 HTML이 길어지면 찾기가 매우매우 어렵기 때문에 쉽게 찾아내고 작성하는 방법을 의미하는 것 같습니다. HTML에 JavaScript를 적용하기 위해서는 HTML 문서에 포함되는 script 요소 태그를 추가하는 두 가지 대표적인 사례가 존재합니다. 하나는 태그에 추가하는 방법, 다른 하나는 가 끝나기 전에 추가하는 방법입니다. 1. 안쪽에 삽입하는 경우 2. 태그가 끝나기 전에 삽입하는 경우 'html도 위에서 아래로 읽어서 head에 넣어버리면 html을 실행시키기 전에 Javascript를 읽어서 body 맨 마지막에 넣어야 됩니다.' DOM 구조를 조회할 때에는 console.dir 이 유용합니다. console.dir(document.body), 또는 객체의 document...

    [JS] 복습(과제) 정리

    1. typeOf 특징 (!(false)) === true // !(값) 을 사용하여 반대값을 출력할 수 있습니다. let actualValue = (1 + 1).toString(); expect(actualValue).to.equal('2'); // 보이는 값이 같을지라도 타입이 다르면 다른 값 입니다. 2. typeOf 특징 let actualValue = 1 + 1; let expectedValue = 2; expect(actualValue === expectedValue).to.be.true; // 넘버 타입은 연산을 하고 expect(1 + '1').to.equal('11'); // 스트링 타입은 이어 붙이기를 합니다. 3. 배열의 특징 //배열 const arr = []; const toBeP..

    [JS] Spread, Rest, Destructing

    Spread와 Rest 문법은 굉장히 비슷한데. 기능에 대한 설명만 주구장창 표현을 하지 구별하는 명확한 차이에 대한 설명이 없어서 복잡했습니다. 제가 생각하는 공통점은 ... 을 앞에 붙이는 것이고. 차이점은 먼저 Spread는 배열하고자 하는 어느 변수를 사용해도 상관 없는 것입니다. Rest는 ...rest를 사용하지만 함수의 파라미터(매개변수)가 존재한다면 (...변수)를 사용해야합니다 그리고 ...rest를 배열이나 객체 끝에 사용하고 그 뒤에는 더 이상 다른 내용이 들어 와서는 안됩니다. rest라는 단어의 뜻을 이해하면 쉽게 이해가 됩니다. 정확한 것은 아니지만 이렇게 개념을 잡고 해당 내용을 이해할 때에 도움이 되었습니다. 1. Spread 문법 객체나, 배열에서 사용 가능 합니다. 주로 ..