- 모든 경우의 수를 확인하여 답을 찾는 방법
- 모든 경우의 수를 탐색하는 과정에서 해가 될 가능성이 없으면 탐색을 중지 시킨 뒤 그 이전으로 돌아가서 다른 경우를 탐색
- 결정의 순간마다 최적이라고 생각되는것을 선택해 답을 찾는 방법
- 이전의 선택이 이후의 선택에 영향을 주지 않아야 함
- 문제를 나눌 수 없을 때 까지 나누고, 각각을 풀면서 다시 합병하여 문제의 답을 찾는 방법
- 문제를 둘 이상의 부분 문제로 나누는 자연스러운 방법이 존재해야 함
- 부분문제의 답을 이용하여 원래의 답을 계산하는 효율적인 방법이 존재해야 함
- 정렬되어 있는 리스트에서 탐색 범위를 절반씩 좁혀가며 데이터를 탐색
- 숫자가 크면 int 대신 long을 사용하자
- 특정한 하나의 정점에서 다른 모든 정점으로 가는 최단경로를 찾는 방법
- 간선들의 가중치는 모두 양수 이어야 함
- 특정한 하나의 정점에서 다른 모든 정점으로 가는 최단경로를 찾는 방법
- 간선의 가중치가 음수일때도 사용 가능
- 최단거리 변수가 굉장히 작아질수도 있으니 long을 사용하자
- 방문 가능한지 확인하려면,
- visit 배열을 만들고 도착지점 부터 체크 하기
- 음의 순환구조가 있는지만 확인하려면,
- 출발점과 확인하려는 간선의 출발지점까지 경로가 없어도 탐색해야 함
- 모든 정점에서 모든 정점으로의 최단경로를 찾는 방법
- 간선의 가중치가 음수일때도 사용 가능
- 최단거리 변수가 굉장히 작아질수도 있으니 long을 사용하자
- 경로의 길이가 원래의 것보다 작은것이 들어오면 교체 해줘야 함
- 1차원 배열에 대해 2개의 포인터를 조작하면서 답을 찾는 방법
- 여러개의 노드들 중 각각 선택한 두개의 노드가 서로 연결되어 있는지 판별하는 방법
- 부모 노드를 자기 자신으로 초기화 해줘야 함
- 가장 적은 비용으로 모든 노드를 연결하는 방법
- 순서가 정해져있는 작업을 차례로 수행해야 할 때 그 순서를 결정하는 방법
- 방향이 있고, 사이클이 발생하지 않는 그래프 일때만 적용 가능
- 나열된 수의 누적된 합을 구하는 방법
- 대량의 소수들을 구하는 방법
- 큰 문제를 작은 문제로 나누어서 푸는 방법
- 계속해서 같은 부분 문제가 여러번 재사용되어 해결되는 문제 이어야함
- 문제의 해를 작은 문제의 해에서 구할수 있어야함
- 2개의 자연수의 최대공약수를 구하는 방법
- 다른 진법으로 변환하는 방법