본문 바로가기
728x90

My Wiki (CodesStates)47

(1-3) [자료구조/알고리즘] - Graph Graph: 여러개의 점들이 서로 복잡하게 연결되어 있는 관계를 표현한 자료구조 직접적인 관계가 있는 경우 두 점 사이를 이어주는 선이 있다. 간접적인 관계라면 몇 개의 점과 선에 걸쳐 이어진다. 하나의 점을 그래프에서는 정점(vertex)이라고 표현하고, 하나의 선은 간선(edge) 이라고 한다. 다음 그림은 간단한 그래프를 나타내었다. 다음 그림을 살펴보자. [그림] 정점 A, B, C와 2개의 단방향 간선, 그리고 하나의 양방향 간선이 있는 그래프 그래프의 표현 방식: 인접 행렬 & 인접 리스트 인접 행렬 알아둬야 할 그래프 용어들에서 인접(adjacency)이라는 용어를 찾을 수 있다. 두 정점을 바로 이어 주는 간선이 있다면 이 두 정점은 인접하다고 이야기한다. 인접 행렬은 서로 다른 정점들이 .. 2021. 9. 1.
(1-2) [자료구조/알고리즘] - Stack, Queue Stack: 데이터(data)를 순서대로 쌓는, 가장 먼저 들어간 데이터가 가장 나중에 나올 수 있는 자료구조 가장 먼저 들어간 데이터는 가장 나중에 나올 수 있다. 다시 말해, 가장 나중에 들어간 데이터가 가장 먼저 나올 수 있다. 자료구조 Stack의 특징은 입력과 출력이 하나의 방향으로 이루어지는 제한적 접근에 있다. 이런 Stack 자료구조의 정책을 LIFO(Last In First Out) 혹은 FILO(First In Last Out)이라고 부르기도 한다. [그림] 브라우저의 뒤로 가기와 앞으로 가기 기능에 사용된 Stack Stack의 실사용 예제 컴퓨터에서 자료구조 Stack은 어떤 곳에 사용되고 있을까? 대표적으로 우리가 자주 사용하는 브라우저의 뒤로 가기, 앞으로 가기 기능을 구현할 때.. 2021. 8. 29.
(1-1) [자료구조/알고리즘] - 재귀 함수 문제를 쪼개어 생각하는 방법 문제를 해결할 때, 동일한 구조의 더 작은 문제를 해결함으로써 주어진 문제를 해결하는 방법을 재귀(recursion)라고 한다. 1. 기존의 문제에서 출발하여 더 작은 경우를 생각한다. arrSum([10, 3, 6, 2]) = 10 + arrSum([3, 6, 2]); [코드] arrSum에 적용할 문제를 더 작게 쪼갠다. 2. 같은 방식으로, 문제가 더는 작아지지 않을 때까지 더 작은 경우를 생각한다. arrSum([3, 6, 2]) = 3 + arrSum([6, 2]); arrSum([6, 2]) = 6 + arrSum([2]); arrSum([2]) = 2 + arrSum([]); [코드] arrSum에 적용할 문제를 가장 작은 단위까지 쪼갠다. 3. 문제가 간단해져서.. 2021. 8. 29.
(5-4) JS/객체 지향 JavaScript/JavaScript와 기타 다른 객체 지향 언어와의 차이점 은닉화(private 키워드)의 한계 Java나 TypeScript라는 프로그래밍 언어는 클래스 내부에서만 쓰이는 속성 및 메소드를 구분시키기 위해 private이라는 키워드를 제공한다. 이러한 은닉화를 도와 주는 기능이 JavaScript에서는 널리 쓰이지 않는다. 정확히는 지원하는 브라우저가 매우 적다. 아래 TypeScript의 예제로 name이라는 속성이 존재한다. 그러나 private 키워드가 붙어 있어서 클래스 내부에서만 사용 가능하다. // TypeScript 문법입니다. class Animal { private name: string; constructor(theName: string) { this.name = theName; } } new Animal("Cat").name; // 사용 불.. 2021. 8. 23.