전체 글

전체 글

    [자료구조] 그래표(Graph)란?

    개요 그래프는 어떤 데이터 사이의 인접한 정보를 저장하는 자료구조이다. 트리(Tree)도 그래프의 한 종류이다. Objects와 Relationship으로 이루어져 있는데 Object는 저장하고자 하는 객체를 의미하며 Relationship은 객체와의 관계성을 의미한다. Undirected Graphs undirected graph는 방향이 없는 그래프를 의미한다. 표현 식은 다음과 같다. E = {{v1, v2},{v3, v5},{v4, v8},{v4, v9},{v6, v9}} 그래프를 {v1, v2}라고 정의할 시, {v2, v1} 이렇게 역으로도 모두 있다고 가정한다. 해당 그래프에서 E의 절대값은 5이며 각 노드들의 경로와 차수도 구할 수 있다. v7과 같은 노드의 경로는 trivial path라..

    [Algorithm] 점근 표기법

    세타 표기법(Theta-Notation) 세타 표기는 상한과 하한을 모두 알고 있을 때 사용하는 표기법이다. 조건식은 다음과 같다. 0 ≤ c1g(n) ≤ f(n) ≤ c2g(n) f(n)을 기준으로 f(n)을 표현하고자 하는 대표값 g(n)을 놓고 보았을 때, g(n)에 어떤 상수를 곱하고 다른 어떤 상수를 곱한 것이 있을 때, f(n)은 반드시 샌드위치처럼 끼어 있어야 한다. 해당 조건식에서 상수는 c1, c2 이다. n이 n0보다 높은 시점에서 f(n)은 항상 c1g(n)보다는 높고 c2g(n)보다는 작다. 이를 'f(n)은 g(n)과 같은 증가속도를 가진다.' 라고 하며 f(n)은 theta of g(n)에 속한다 라고 한다. g(n)은 f(n)의 점근적 상한 및 하한(asymptotically ..

    [Algorithm] 선형검색, 이진검색 알고리즘과 점근분석(Linear&Binary search)

    선형검색, 이진검색 알고리즘이란? Linear&Binary search는 배열에서 특정한 값을 찾을 때 쓰는 검색 방법이다. 해당 글에서는 변수가 N 하나만 있다고 가정하고 작성할 것이다. 예를 들어 N = [1, 3, 8, 9, 4, 10, 6, 2] 라는 배열이 있다고 가정하겠다. 이 배열에서 나는 10이라는 값을 찾고 싶다. Linear search는 배열의 앞에서부터 value값이 10인지 아닌지 찾는다. 시간복잡도는 O(n)이다. 시간복잡도가 O(n)인 이유는 만약 내가 2라는 값을 찾고 싶다면 처음부터 끝까지 배열을 순회해야 하기 때문이다. Binary search는 배열의 중간값에서부터 시작한다. 우선 Binary search는 배열이 정렬된 경우에만 사용이 가능하다. N을 오름차순으로 정렬..

    [Algorithm] 알고리즘을 배우는 이유

    왜 이런게 생겼나요?서로 다른 2개의 알고리즘이 있을 때, 똑같은 문제를 풀 수 있는 2개의 알고리즘이 있다면, 어떤 알고리즘을 사용하는 것이 더 빠른가? 라는 문제가 있다고 가설을 세워 보겠다. 기본적인 답은 다음과 같이 생각할 수 있다. 둘 다 코딩을 해서 어떤 알고리즘이 더 빠른지, 메모리는 얼마나 소비하는지 확인한다. 하지만 프로그래머는 몸값이 비싸고 개인별로 능력치도 상이하다. 때문에 오류발생 가능성이 높기에 최선의 방법이 아니다. 주어진 알고리즘을 수학적으로 분석해서 어떤 알고리즘이 더 좋은지 결론을 내리는 것이 필요하다.글쓴이의 마음가짐대부분의 컴공생이나 개발자는 코딩테스트를 위해 알고리즘을 많이 공부한다. 물론 이것은 필자 또한 마찬가지이다. 하지만 알고리즘 공부의 목적을 단순히 코딩테스트..

    [React] 프로퍼티에 필수, 기본값 지정 / 자식 프로퍼티 사용

    필수 프로퍼티 특정 컴포넌트에 반드시 전달되어야 하는 프로퍼티가 있다면, 프로퍼티를 필수 프로퍼티로 지정하여 보낼 수 있다. 필수 프로퍼티는 특수 변수 isRequired를 사용하여 전달할 수 있다. 필수 프로퍼티 사용하기 먼저 App.js에서 object형 프로퍼티와 정수형 프로퍼티 2개를 넘겨 줄 것이다. App.js import Ex from './03/Ex'; import './App.css'; function App() { return ( ); } export default App; 여기서 우리는 requiredNumValue를 기본값으로 지정할 것이다. props는 기본적으로 문자형으로 전달된다. 때문에 prop-types를 사용하여 프로퍼티 자료형을 지정해줘야 한다는 것을 잊어선 안된다. i..

    [자료구조] 트리(Tree) 기본

    개요 트리는 노드들의 계층 관계를 표현한 집합체이다. 모양은 침엽수와 같은 나무를 거꾸로 매달아 놓은 것처럼 생겼는데 이제부터 사진들과 함께 알아 볼 것이다. 트리는 종류가 많은데, 해당 글에서는 트리의 정말 기본적인 내용만 다룰 것이다. 규칙 1. 최상위 레벨에 있는 노드는 루트라고 하며 진입 차수가 0이다. 루트 노드는 트리마다 하나밖에 존재하지 않는다. 2. 모든 노드는 0, 또는 n개의 자식 노드를 가진다. 3. 모든 노드는 하나 이상의 부모 노드를 가진다. 4. 트리는 level을 가진다. 가장 꼭대기에 있는 루트 노드는 레벨이 0이며 트리의 루트로부터 특정 vertax까지의 경로 길이로 결정된다. 5. 루트 노드로부터 특정 노드까지의 경로는 반드시 1개만 존재한다. 6. 만약 트리가 루트 뿐이..

    [React] 다양한 자료형 프로퍼티 사용하기

    시작 리액트에서 프로퍼티에 int형이나 boolean형의 값을 전달할 때는 큰따옴표를 사용할 수 없다. 그냥 큰따옴표에 값을 전달하면 문자형으로 인식이 되어 버린다. 때문에 자료형을 지정하여 프로퍼티를 전달할 수 있는 방법을 소개한다. import PropTypes from 'prop-types'; 먼저 해당 라이브러리를 import 해야한다. 해당 글에서는 ChildComponent라는 임의의 컴포넌트를 만들어 사용했다. 객체 구조 분해 할당식 사용 import React, { Component } from 'react'; import PropTypes from 'prop-types'; class ChildComponent extends Component { render() { const { numVa..

    [React] 프로퍼티(props) 기본

    개요 프로퍼티는 상위 컴포넌트가 하위 컴포넌트에 값을 전달할 때 사용한다. JS의 DOM트리 방식으로도 값을 전달할 수 있다. 프로퍼티값은 수정할 수 없다. 코드를 보면서 사용 방법을 알아보도록 하겠다. 예제 코드 우선 임의의 컴포넌트 하나를 생성한다. 본 글에서는 MyComponent라는 임의의 컴포넌트를 생성했다. 아래 코드는 클래스형 컴포넌트의 예시이다. 클래스형 컴포넌트와 함수형 컴포넌트를 모두 한 번씩 생성해 보면서 프로퍼티를 전달받을 것이다. import React, { Component } from 'react'; class MyComponent extends Component { render() { return ( ); } } export default MyComponent; 이렇게 컴포넌..