본문 바로가기

분류 전체보기

(341)
분할정복 Divide & Conquer 알고리즘, 합병정렬 Merge Sort 이해하기 이번 글에서는 분할 정복 알고리즘에 대해 이해하기 위해 merge sort 복잡도를 분석해보겠습니다. Divide & Conquer Algorithm 분할 정복 알고리즘은 n개의 요소를 가진 문제를 n개의 부분 문제로 divide 하고 부분 문제들을 conquer하여 문제를 해결하는 방식입니다. n개로 분할된 문제들을 해결하는 과정을 n번 반복해야 하므로 재귀적으로 해결할 수 있고, 이 과정에서 점화식을 활용할 수 있습니다. 점화식이란 더 작은 입력에 대해 자신의 값으로 함수를 나타내는 방정식으로, 분할 정복 알고리즘에서 수행시간을 표현하는데 사용됩니다. 예시 1) T(n) = T(n-1) + Θ(1) T(n) = 각 재귀 호출에 걸리는 시간은 상수시간 Θ(1) + 새로운 재귀 호출에 필요한 시간 T(n..
React) this.setState 끝난 후 특정 작업 실행 this.setState 끝난 후 특정 작업 실행 setState는 클래스형 컴포넌트에서 state의 상태를 변경하기 위해 사용하는 함수입니다. setState 함수를 실행시켜 state 값을 변경하는 작업을 마친 후에 특정 작업을 실행하도록 하고싶은 경우에는 setState의 두번째 파라미터로 콜백 함수를 등록하면 됩니다. ... { this.setState( {number: number + 1}, () => { ... callback 함수 ...} ); } } > + 1 ... 이렇게 setState의 첫번째 파라미터로 변경할 state 상태를 전달하고, 두번째 파라미터에 setState가 끝난 이후 callback함수를 작성하여 전달하면 됩니다. References 리액트를 다루는 기술(김민준)
JSX) props 검증 : propTypes props 검증 : propTypes propTypes는 그동안 사용해본적은 없고 이번에 기술서를 읽으면서 처음 알게된 기능입니다. 여러 명의 개발자들이 협업하는 프로젝트의 경우, 또는 컴포넌트를 재사용할 수 있게 오픈해 놓은 경우 다른 개발자들이 사용할 때 컴포넌트를 본래 의도대로 잘 사용할 수 있도록 하기 위해 props에 전달해야할 값의 자료형을 지정해 놓는 것입니다. 다음과 같이 임포트 해줘야 사용할 수 있습니다. import PropTypes from 'prop-types'; 사용 방법은 defaultProps를 지정하는 방법과 같습니다. ... const Conpomenent = ({ name, extra }) => { return hello {name} {extra} ; } ... Compo..
ES6) 비구조화 할당 destructuring assignment 비구조화 할당 destructuring assignment 기본적으로 전달받은 props 컴포넌트에서 사용하는 방법은 다음과 같습니다. 인자로 props를 받고, props.{props값 명} 으로 사용합니다. 사용할때마다 굳이 props. 을 붙여주는 것은 불편하기 때문에 비구조화 할당 문법을 사용하는 것입니다. // 부모 컴포넌트 -> ... const Component = props => { return hello {props.name} ; } ... 비구조화 할당 방법 1 // 부모 컴포넌트 -> ... const Component = props => { const { name, extra } = props; return hello {name} {extra} ; } ... // hello worl..
JSX) props.children props.children 컴포넌트 태그는 대부분 props를 사용한다면, 다음과 같은 형식으로 호출합니다. 또는 다음과 같이 호출할 수도 있습니다. world 이렇게 컴포넌트 태그 사이에 전달된 world 라는 값은 Componenent 컴포넌트에서 사용하려면 props.children값을 사용하면 됩니다. ... const Component = props => { return hello {props.children} ; } ... 항상 그냥 props 값을 전달하기만 해서 이번에 책을 읽으며 처음 알게 된건데 사실 이걸 언제 사용해야 될지는 잘 모르겠습니다.;; References 리액트를 다루는 기술 (김민준)
JSX) props 기본값 설정 : defaultProps 구글링을 하며 공부를 하다보니 지식이 너무 뒤죽박죽인 것 같아 정리하려고 책을 사서 읽고 있습니다 :) 책을 읽으며 그동안 정확하게 정리되지 않았던 내용들을 기록해두기 위한 목적으로 글을 작성합니다! 아래는 제가 읽고 있는 기술서 입니다. 리액트를 다루는 기술 - 교보문고 개정판이 나왔습니다. 리액트 16.8 버전에 Hooks라는 기능이 도입되면서 함수형 컴포넌트에서도 상태 관리를 할 수 있게 되었습니다. 이에 맞춰 책에 사용된 주요 예시를 모두 함수형 컴포넌트 형 www.kyobobook.co.kr props 기본값 설정 : defaultProps 부모 컴포넌트에서 자식 컴포넌트를 불러올 때 전달하는 props의 초기값을 설정하는 방법입니다. import React from 'react'; const ..
Big-O notation Big-O notation 점근적 상한 Aysmpototic Upper Bound n ≥ N 인 모든 정수 n 에 대하여 $g(n)$ ≤ $cf(n)$이 성립하는 실수 c>0과 음이 아닌 정수 N이 존재한다. $g(n) ∈ O(f(n))$ $g(n)$ 은 $f(n)$의 big O이다. $g(n)$ : 내가 구한 알고리즘/함수 $f(n)$ : 해당 함수의 시간 복잡도를 나타내는 함수 g(n) ∈ O(f(n)) n ≥ N 인 모든 정수 n에 대하여 g(n) ≤c x f(n)이 성립하는 실수 c > 0 과 음이 아닌 정수 N이 존재한다. 기울기가 양수 cf(n)과 g(n)의 교차점 N이 양의 정수로 반드시 존재한다. N 이후로 cf(n)은 g(n)보다 항상 큰 값을 나타낸다. 즉, N이후에 g(n)은 아무리 ..
5. 프로세스 동기화 Process Synchronization 이번 글에서는 프로세스 동기화에 대해 알아보겠습니다. 프로세스 동기화 프로세스 동기화의 필요성 오늘 날 대부분 컴퓨터 시스템은 하나의 하드웨어 안에 여러 개의 프로세스가 존재할 수 있는 멀티테스킹 시스템/멀티프로세스 시스템입니다. 하나의 하드웨어 안에서 동작하는 여러 프로세스들은 각각 독립적으로 동작하기 때문에 기본적으로는 프로세스 간 동기화가 전혀 이루어져 있지 않습니다. 이는 프로세스들이 공유 자원에 접근하려 할 때, 공유 자원의 integrity를 손상시킬 수 있기 때문에 문제가 발생합니다. 따라서 공유 자원에 대한 동기적 접근시 데이터 무결성을 해치지 않기 위해 운영체제는 프로세스 동기화 (process synchronization) 매커니즘을 가지고 있..