728x90
반응형

Data Structure 13

[Data Structure] Trees - 트리구조

많은 자료구조 중에서 자주 사용되는 구조 중 하나는 트리구조이다. 어떤 웹사이트에서, 사이트맵 이라는 걸 본 적이 있다면 이해하기 쉽다. 또, 우리가 사용하는 PC를 폴더단위로 관리한다면, 더 이해하기가 쉽다. 따오기라는 폴더 안에는 꿩, 가마우지, 새폴더, 새 새폴더 라는 이름의 4개의 폴더가 있다. 하나의 부모 아래에 여러개의 자식이 있는 구조. 이게 트리구조 다. 우리가 자료를 찾거나 정리하기 위해 사용하는 자료구조 중에서 트리를 기반으로 한 다양한 구조가 있다. Binary Tree ( 이진 트리 ) 이진 트리는 하나의 부모가 가질 수 있는 자식의 수가 최대 2개인 트리를 말한다. Full Binary Tree ( 포화 이진 트리 ) 포화 이진 트리는 모든 부모노드가 두 개의 자식노드를 가지고 있..

Algorithm 2020.09.16

[Data Structure] Graph - 그래프

그래프는 자료의 관계도에 주로 사용되는 자료구조이다. 가장 대표적인 예는 역시 싸이월드 페이스북 친구이다. 나와 친구의 관계를 가중치1이라고 한다면, 친구의 친구는 가중치2 정도로 두고, 친구의 친구의 친구는 가중치3정도로 두는 것이다. 그러면 나를 기준으로 가중치가 1인 사람은 가장 가까운 사람들이고, 가중치가 2인 사람들은 그 다음으로 가까운 사람들이고, 3정도의 가중치는 내 친구와 그 사람의 친구가 서로 친구인 경우니까 그냥 남이다. Graph 그래프는 이전의 링크드리스트에서 보던 노드라는 개념을 가져와서 사용한다. 다른 점이 있다면, 실제로 그래프에서는 노드 대신 Vertex ( 점 ) 와 Edge ( 간선 ) 을 사용한다. ( 참고로 vertex의 복수형은 vertices 이다 ) 그래프에는 방..

Algorithm 2020.09.14

[Data Structure] Hash table - 해시테이블, 객체

해쉬테이블은 파이썬에서 사용하는 dictionary, 자바스크립트에서 사용하는 객체와 같다. string 형태의 key와 값을 받아 저장하고, key를 알고 있으면 O(1)의 시간복잡도로 value를 가져올 수 있는 엄청난 자료구조이다! 개념을 명확히 알면 나중에 응용할 때에 더욱 빛을 발하는 자료구조이니 반드시 알아두자. Hash function ( 해시 함수 ) 해시함수는 입력받는 key에 따라 특정 index를 반환하는 함수이다. 같은 key에 대해 항상 같은 index를 반환하여야 하고, 최대한 일관성을 유지하는 것이 좋다. 위의 해시함수는 문자열 'cat'이 입력되면 항상 1을 반환하고, 'dog'이 입력되면 2를 반환한다. 이렇게 반환된 index에 입력된 key, value 가 해시테이블에 ..

Algorithm 2020.09.12

[Algorithm] Recursion - 재귀

Loops may achieve a performance gain for your program. Recursion may achieve a performance gain for your programmer. Choose which is more important in your situation! : 루프는 프로그램의 성능을 향상시킵니다. 재귀는 프로그래머의 실력을 향상시킵니다. 상황에 따라 더 적합한 걸 선택하세요! Recursion ( 재귀 ) 재귀는 반복문과 그 역할을 서로 바꿀 수 있다. 재귀를 쓰면 복잡한 코드가 조금 더 간결해보이는 효과를 나타낸다. 피보나치를 구현해보자. 반복문: const fib1 = (n) => { if ( n < 3 ) { return n === 0 ? 0 : 1; } ..

Algorithm 2020.09.08

20200907

오늘은 블로깅하며 공부한 내용을 복습하는 시간을 가졌다. 자료구조를 생각보다 빨리 마무리한 덕분에 여유가 크게 생겼지만, 지난 주말동안 날려버린 것들을 다시 세우기에는 너무나 부족한 시간이다. 일단은 내일이 지난 다음에야 조금 정신을 차릴 수 있지 않을까. 9월 07일 (월) Today I Learned 오늘은 OOP에 대해 공부하였다 자바스크립트에서는 클래스 이외의 일반 객체도 상속이 가능하다. 객체에 함수를 담아 메소드처럼 상속받거나, super syntax를 활용해 부모속성을 받아오기도 한다. Tomorrow I'll Learn 서버 공부하기

Today I Learned 2020.09.07

[Data structure] 자료구조 - stack, queue

자료구조의 가장 기본이 되는 stack ( 스택 ) 과 queue ( 큐 ) 는 자료구조의 처음을 장식한다. 그런데 정작 사용할 때에는 어떻게 해야할 지 막막한 게 초보자의 마음이리라. 자료구조는 구현과는 제법 거리가 있다. 스택과 큐는 그냥 배열로 선언해서 사용해도 무방하다. 이처럼 자료구조는 어떤 방식으로 데이터를 관리할 지 그 구조에 대해 설명하는 것이지, 어떤 방식으로 구현해야만 한다는 건 아니다. 따라서 앞으로 정리하게 될 모든 자료구조도 개념에 대해 이해하는 게 우선이라는 점을 기억하자. 또, 자료구조는 알고리즘과 뗄 수 없는 관계이기때문에 아주아주 중요한 개념이라는 것 정도는 알고 있자. Stack ( 스택 ) 스택은 동전쌓기처럼 가장 나중에 쌓은 동전을 가장 먼저 꺼낼 수 있는 구조이다. ..

Algorithm 2020.09.07

20200904

오늘은 제법 완료한 일들이 많다. 코드스테이츠 중간리뷰, 슬랙봇 재정비, 스프린트, 알고리즘 스터디... 내일부터 주말이니까 조금 빡세게 코딩해보자! 9월 04일 (금) Today I Learned 오늘은 자료구조에 대해 공부하였다 우준님과 함께 페어프로그래밍을 진행하였다 Tomorrow I'll Learn 슬랙봇 ( feat. Bots ) 만들기 포스팅 시간나면 서버관련 내용 포스팅 시간나면 자료구조 포스팅

Today I Learned 2020.09.04

20200903

한줄평 9월 03일 (목) Today I Learned 오늘은 자료구조에 대해 공부하였다 우준님과 stack, queue, LinkedList를 마무리 했고, hashTable 하다가 뇌절와서 멈췄다. Checkpoint Solution 시간이 조금 일찍 끝나서 순환큐에 대해 간단히 설명을 들었다. 어느 순간부터 헷갈리다가, 끝나기 직전에 스스로 정의내렸다. 하나의 비어있는 메모리는 플래그다. 큐가 가득차있는지 아닌지만을 true, false 로 가지고 있는 게지. Tomorrow I'll Learn hashTable 마무리 자료구조 블로깅

Today I Learned 2020.09.03
728x90
반응형