dev 8

React 필수 기초 개념

React란?UI(사용자 인터페이스)를 만들기 위한 JavaScript 라이브러리컴포넌트 기반으로 UI를 쪼개서 재사용 가능 단방향 데이터 흐름 지향SPA(Single Page Application) 구현에 주로 사용컴포넌트란?UI를 독립적이고 재사용 가능한 단위로 나눈 것 함수형 컴포넌트 (권장)클래스형 컴포넌트 (이전 버전에서 사용, 지금은 거의 함수형만 씀)예시 - 함수형 컴포넌트function Hello() { return Hello, React!;} SPA(Single Page Application)란?말그대로 해석하면 한개의 페이지로 구성된 웹 애플리케이션 처음 페이지 로드시 필요한 HTML, CSS, JS를 모두 받아옴 -> 초기 로딩 느림이후에는 페이지 전환 시 새로고침 없이 필요한 부분..

dev/react 2025.06.29

MST : 최단경로 알고리즘 (크루스칼/프림)

MST = Minimal Spanning Tree 일단 MST를 알기 전에 Spanning Tree를 알아야 한다! Spanning Tree란, 그래프의 모든 정점을 포함하면서 간선의 수가 최소인 트리이다. Spanning Tree의 조건 N개의 정점 N-1개의 간선 사이클이 없다. MST는 Spanning Tree 중에서 가중치의 합이 최소인 것을 말한다! '마을과 마을을 잇는 도로들이 주어지고, 도로의 길이가 최소가 되게 모든 마을을 이어라.' 와 같은 문제에 사용되는 알고리즘이다. MST 알고리즘 종류 크루스칼 프림 크루스칼 vs. 프림 유형 시간복잡도 따라하세요! 크루스칼 Greedy 간선 중심 O(ElogE) 간적크 프림 정점 중심 O(V^2)/O(ElogV) 간많프 크루스칼 알고리즘 간선중심으..

dev/알고리즘 2021.05.30

Binary Search(이진탐색/이분탐색)

이진탐색이란? - 특정 데이터를 빠르게 검색할 수 있다. O(logN) - 정렬되어 있는 배열에서 사용 가능하다. 구현 코드 (Java) int binarySearch(int[] arr, int target, int start, int end){ //1. 이진탐색은 무조건 정렬된 배열에서 가능하다. Arrays.sort(arr); //2. 어떤 값을 기준으로 할지를 정하고, 초기값을 정한다. //이 예시에서는 매개변수로 받는걸로 한다. int mid = 0; //start가 end보다 커질때까지 반복 while(start

dev/알고리즘 2021.04.25

최단경로 알고리즘

최단경로 알고리즘이란 그래프에서 노드간의 최단경로를 찾는 알고리즘이다. 대표적인 최단경로 알고리즘 BFS 다익스트라 벨만포드 플로이드 와샬 다음 표는 상황에 따라 어떤 알고리즘을 선택해야 하는지에 대한 표이다. 단일 노드 - 단일 노드 모든 노드 쌍 Edge에 weight 없음 BFS 플로이드 와샬 알고리즘 Edge에 weight 있음 음수 weight 있음 벨만 포드 알고리즘 음수 weight 없음 다익스트라 알고리즘 (출처. https://shnoh.tistory.com/15) 다익스트라 알고리즘 한 정점 A에서 다른 정점으로 가는 촤단경로를 구할 때 사용. 가중치는 0 또는 양수만 가능하다. 그리디를 이용한 알고리즘 O(V^2) O((V+E)logV) // 우선순위 큐를 사용했을때 private v..

dev/알고리즘 2021.04.04

다익스트라 알고리즘 (Dijkstra Algorithm)

다익스트라 알고리즘 (Dijkstra Algorithm) 다익스트라 알고리즘은 최단경로를 찾는 알고리즘이다. 최단경로 알고리즘 종류 다익스트라 벨만포드 플로이드 음의 가중치가 없을 때, 하나의 정점에서 나머지 모든 정점으로의 최단경로를 구할 때 사용된다. 다익스트라 알고리즘은 DP를 활용한다. DP가 가능한 이유 > 최단거리는 여러 개의 최단거리로 이루어져 있기 때문! 시간복잡도 V : 정점의 개수, E : 간선 개수 O(V^2) 우선순위큐 사용시 : O((V+E)logN) O(VlogN) : 미방문 노드 중 현재까지의 최단거리를 가지는 노드 찾기 O(ElogN) : 각 노드마다 이웃한 노드이 최단 거리를 갱신할 때 필요 변수 int[] distance // 최단 거리 저장 boolean[] visite..

dev/알고리즘 2021.04.04

0.0 블록체인 공부 시작을 어떻게?

마음 다잡고 제대로 코딩하기 시작하면서 기술 블로그들을 돌다가 블록체인에 관심이 생겨 여기저기 뒤지고 다녔다. 인공지능, 데이터 분석, 시스템 프로그래밍, IoT 등등 대부분의 분야에 한번씩 발을 담궈는 보았지만 아직까지는 그냥 B2C 서비스 만드는게 제일 재밌다. 하지만 요즘 넘쳐나는게 백엔드 개발자라고 하더라...ㅠㅠ 주변만 봐도 코딩 센스가 넘치는 사람들에 비하면 나는 한없이 부족한데 나만의 강점을 가질 수 있는 분야를 찾아보자는 생각을 하게 되었고 지금 하고있는 공부 열심히 하면서 전문분야 정해서 세컨 프로젝트를 해보기로 했다!!! 일단 블록체인 공부는 어떻게 하면 좋을지 구글링을 해보았다 1) 블록체인 개발자 블로그 https://medium.com/%EC%95%8C%EC%93%B8%EC%8B%..

dev/블록체인 2020.07.26

[c++] 로또 번호 추첨 프로그램

한 언어에 빨리 익숙해지기 위해서는 프로그램을 만들어보는 것이라고 생각해서 기본적인 문법만 숙지한 후 바로 프로젝트를 만들어 보기로 했다. 로또 번호 : 1~45 사이의 정수 난수생성 1) 헤더파일의 rand 난수 생성함수 사용 rand() 함수 => 0 ~ RAND_MAX 중 정수 1개 리턴 2) seed값의 필요성 1~5번째 실행 결과값이 같다. => seed 값 때문 rand 함수는 seed값과 매칭되는 숫자가 정해지기 때문에 seed 값에 따라서 rand 함수의 결과 값이 변하게 된다! 즉, 같은 시드값이라면 몇십번 몇백번 실행해도 같은 난수값이 생성된다 따라서 실행중에 항상 변하는 seed값을 이용해야 되므로 항상 변화하는 숫자인 시간을 seed값으로 넣어보자 3) 시간을 seed값으로 넣기 시..

dev/C++ 2020.03.05