현재 상황에서 지금 당장 좋은 것만 고르는 방법매 순간 가장 좋아 보이는 것을 선택현재의 선택이 나중에 미칠 영향에 대해 고려하지 않음기준에 따라 좋은 것을 선택하는 알고리즘으로, 기준을 제시하는 경우 많음문제 풀이를 위한 최소한의 아이디어를 떠올리고, 이것이 정당한지
머릿속에 있는 알고리즘을 소스 코드로 바꾸는 과정풀이를 떠올리는 것은 쉽지만 소스 코드로 옮기는 것은 어려운 문제완전 탐색: 모든 경우의 수를 주저 없이 다 계산하는 방법시뮬레이션: 문제에서 제시한 알고리즘을 한 단게씩 차례대로 직접 수행해야 하는 문제 유형문제여행가
Depth-First Search깊이 우선 탐색그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘자료구조 중 스택을 활용하여 구현시간 복잡도 O(N)DFS 방문 순서는 고정적이지 않음노드의 방문 순서는 탐색하는 경로에 따라 달라짐DFS의 방문 순서는 스택에서 노드를 꺼
데이터를 특정한 기준에 따라서 순서대로 나열하는 것비교 가능한 요소들끼리 정렬ascending: 오름차순dscending: 내림차순비교 대상들끼리는 비교 가능하고 unique해야 함데이터를 정렬된 부분과 정렬되지 않은 부분으로 나눔정렬되지 않은 부분에서 가장 작은 데이
리스트 안에 있는 특정한 데이터를 찾기 위해 앞에서부터 데이터를 하나씩 차례대로 확인하는 방법리스트 내에 데이터가 아무리 많아도 시간만 충분하다면 항상 원하는 원소를 찾을 수 있음시간 복잡도 O(n)으로 데이터가 많을 경우 오래 걸림배열 내부의 데이터가 정렬되어 있을
그래프는 (Node, Edge)의 튜플로 표현되며 이때 Node를 Vertex라고도 함Node: 노드Edge: 연결Undirected graph: 노드들끼리 방향성이 존재하지 않는 그래프 https://upload.wikimedia.org/wikipedia/
세그먼트 트리의 필요성 문제 크기가 N인 정수 배열 A가 있고 여기서 아래와 같은 연산을 M번 수행한다고 가정 구간 l~r까지의 A[l] + A[l + 1] + … + A[r - 1] + A[r] 구하기 i번째 수를 v로 바꾸기 1번 연산은 아래와 같은 코드로 수행 가능 시간 복잡도는 O(N) 2번 연산의 시간 복잡도는 O(1) ...
Pririty Queue