스택은 데이터가 쌓이는걸 처리하는 하나의 알고리즘 방식이다.쉽게 생각하면 다음 그림과 같이 박스를 쌓고 꺼낼 때는 맨 위 에서 부터 꺼내듯후입선출(Last In First Out : LIFO)의 방식이다. 예를 들어 우리가 페이지 뒤로 가기 버튼과 같은 기능들 또한 스
이진 탐색은 우리가 배열에서 특정한 값을 찾고자 할 때 사용하는 알고리즘이다.자바스크립트에서 특정한 값의 인덱스를 모른다고 했을 때 그 특정한 값을 찾기 위해서 일반 for문즉 선형적 탐색을 사용할 경우 O(n) 만큼의 시간이 걸린다. 여기서 n은 배열의 길이 만큼이다
그리디 알고리즘은 매 순간 최선의 방법을 택하여 결과를 도출하는 알고리즘이다.예시1)가장 흔한 예시로 우리가 편의점 알바생 이라고 해보자.손님이 구매한 물건 : 3570원손님이 지불한 금액 : 5000원 지폐알바생인 우리는 500원, 100원, 50원, 10원 동전을
원하는 값에 도달 할 때 까지 자기 자신을 호출하는 함수이다.예시1 팩토리얼(재귀 함수로 표현O)예시1 팩토리얼(재귀 함수로 표현X)예시2 피보나치(재귀 함수로 표현 O)예시2 피보나치(재귀 함수로 표현 X)첫 번째 예시에서 재귀 함수를 쓴 것과 안 쓴 코드의 작동 방
배열을 2개의 문제로 쪼갠 후 정렬하고 다시 더하는데 이것을 반복하여 정렬된 배열을 만든다.그냥 일반적인 2중 for문의 정렬(선택 정렬)보다 평균적으로 훨씬 더 빠르다.2중 반복문 사용 오름 차순 정렬(선택 정렬)퀵 정렬 사용 오름 차순 정렬위 두 가지의 경우를 비교
병합 정렬은 분할, 정렬, 합치기 이 세 가지를 수행 하면서 배열을 정렬하는 알고리즘이다.기존에 퀵 정렬은 최악의 상황을 제외한 경우에서 매우 빠른 속도를 제공하지만 불안정 정렬이고 최악의 경우에는 n^2이라는 시간 복잡도를 가진다.하지만 병합 정렬은 어떠한 상황에서도
입력인자 1: NNumber 타입의 1 <= N <= 12인자 2: KNumber타입의 Array (0 <= index)ex) n이 3이고 k가 2, 3, 1일 경우모든 경우의 수를 2차원 배열에 담는다면 \[1,2,3,1,3,2,2,1,3,2,3,1,
쉽게 말해 이미 구해 놓은 값들을 재활용하는 알고리즘이라고 생각하면 편하다.예시를 들면 편하다. 피보나치(동적 계획법 X)피보나치(동적 계획법 O)위 두 개 코드 모두 피보나치를 구하는 코드이지만 계산 시간은 천지 차이다.동적 계획법을 사용하지 않은 첫번째 코드는 피보
Tree 구조코드리뷰깃허브트리 구조는 비선형 구조로 계층구조이다.맨 위를 루트로 잡고, 계층별로 부모, 자식이 나뉘어지고 부모는 자식 노드들을 가진다.부모는 자식노드들에 대한 참조값을 가질 수 있고, 자식은 본인의 부모에 대한 참조값을 가질 수 있다.트리구조를 가지고
트리구조에서의 DFS, BFS
UnionFind 알고리즘 설명HashMap으로 구현배열로 구현최종 코드깃허브트리, 그래프 구조에서 같은 부모(집합)에 속해 있는지, 사이클이 존재하는지에 대해서 판별 할 수 있는 알고리즘이다.다시 말해 각각의 노드들에 대한 연결 정보를 알 수 있을때 특정 노드 두개의
최소 신장 트리프림크루스칼비교문제프림 코드크루스칼 코드무방향 그래프, 단방향 그래프에서 각 정점들을 최소값의 간선으로 연결 시켜 놓은 트리 형태로의 전환 알고리즘이다.그림으로 쉽게 표현하면위와 같은 그래프에서 최소값의 간선으로만 표현하면이렇게 모든 정점들은 연결되면서
AVL 트리코드리뷰일반 이진 트리에서 발생 할 수 있는 문제인 편향적인 트리를 방지할 수 있는 알고리즘이다.일반 이진 트리에서 값이 순서대로(1, 2, 3, 4, 5, 6, 7) 이런식의 값이 들어온다면루트 노드를 기준으로 오른쪽 레벨만 깊어지게 된다.이 상태에서 값을
문제 요약시도&풀이 방법코드리뷰문제 링크정점, 간선, 경유 개수 제한, 출발 노드, 도착 노드에 대한 정보가 주어진다.이때 경유 개수 제한에 만족하면서 출발 노드에서 도착 노드까지의 최단거리를 구하라경유 제한이 없을 경우경유 제한이 없을 경우 평범한 다익스트라 알고리즘
에라토스테네스의 체임의의 자연수 이하의 존재하는 소수를 간단하고 빠르게 찾는 알고리즘방법(1제외) 2부터 임의의 자연수 A의 제곱근까지 각 배수를 제거하는 방법이다.배수가 된다는 것은 소수가 아니기 때문이다.2 x 22 x 3 ...2 x 183 x 23 x 3...3