[알고리즘] DFS
·
개발공부/알고리즘
💡 DFS 알고리즘완전 탐색 (모든 노드를 한 번씩 탐색하기 위한 방법)을 수행하기 위한 방법 중 하나로, 탐색 트리의 최근에 첨가된 노드를 선택하고, 이 노드에 적용 가능한 동작자 중 하나를 적용하여 트리에 다음 수준(level)의 한 개의 자식 노드를 첨가하며, 첨가된 자식 노드가 목표 노드일 때까지 앞의 자식 노드의 첨가 과정을 반복해 가는 방식탐색 과정이 시작 노드에서 한없이 깊이 진행되는 것을 막기 위해 깊이 제한(depth bound)을 사용. 깊이 제한에 도달할 때까지 목표 노드가 발견되지 않으면 최근에 첨가된 노드의 부모 노드로 되돌아와서 (백트래킹), 부모 노드에 이전과는 다른 동작자를 적용하여 새로운 자식 노드를 생성DFS를 실제로 구현할 때는 스택 또는 재귀 함수를 이용→ 재귀 함수..
[알고리즘] BFS
·
개발공부/알고리즘
📌 알고리즘 기초 이론시간 복잡도알고리즘의 성능을 나타내는 척도특정한 크기의 입력에 대하여 알고리즘 수행 시간 분석동일한 기능에 시간 복잡도가 낮을수록 우수    2. 빅오 표기법가장 빠르게 증가하는 항만을 고려하는 표기법차수가 가장 큰 항에서 계수를 제외하여 표현ex) 연산 횟수가 아래와 같은 알고리즘의 빅오로 표시하면? 3N^3 + 5N^2 + 1000000 → O(N^3)      3. 예시 ( N=5의 케이스) let arr = [3, 5, 1, 2, 4];let sum = 0;for (let i=0; i수행 시간은 데이터 개수 N에 비례, 시간 복잡도: O(N)Q1. N개의 데이터 합을 계산하는 프로그램Q2. 이중 반복문 예제let arr = [3, 5, 1, 2, 4];for (let i=0..
[알고리즘] 이진탐색
·
개발공부/알고리즘
📌 알고리즘 기초 이론자료구조다수의 자료를 담기 위한 구조로, 데이터의 수가 많아질 수록 효율적인 자료 구조가 필요하다.예를 들어, 삽입과 추출이 모두 적당히 빠른 자료 구조가 있을 수 있고, 삽입은 느리지만 추출을 빠른 자료 구조가 있을 수 있다.데이터를 효과적으로 저장하고, 처리하는 방법에 대해 이해하여, 불필요하게 메모리 낭비나 계산을 하지 않도록 해야 한다.   2. 선형 구조와 비선형 구조선형 구조하나의 데이터 뒤에 다른 데이터가 하나 존재하는 자료 구조데이터가 일렬로 연속적으로 연결되어 있다.배열, 연결 리스트, 스택, 큐비선형 구조하나의 데이터 뒤에 다른 데이터가 여러 개 올 수 있는 자료 구조데이터가 일직선상으로 연결되어 있지 않아도 된다.트리, 그래프   3. 자료 구조와 알고리즘효율적..