최적 부분 구조큰 문제를 작은 문제로 나눌 수 있으며 작은 문제의 답을 모아서 큰 문제를 해결할 수 있다.중복되는 부분 문제동일한 작은 문제를 반복적으로 해결해야 한다.피보나치 수열 같은 것들을 구하고자 할 때 사용해볼 수 있다.def fibo(x): if x == 1
거스름 돈 문제1이 될때까지 문제곱하기 혹은 더하기 문제모험가 길드 문제 구현이란 머릿속의 알고리즘을 소스코드로 바꾸는 과정방향벡터상하좌우 문제시각 문제왕실의 나이트 문제문자의 재정렬 문제
탐색이란 많은 양의 데이터 중에서 원하는 데이터를 찾는 과정을 말함 대표적인 그래프 탐색 알고리즘으로는 DFS와 BFS가 있다 먼저 들어온 데이터가 나중에 나가는(LIFO)의 자료구조이다. 입구와 출구가 동일한 형태로 스택을 시각화할 수 있다. 스택 구현 예제 fr
정렬 이란 데이터를 특정한 기준에 따라 순서대로 나열하는 것 처리되지 않은 데이터 중에서 가장 작은 데이터를 선택해 맨 앞에 있는 것과 바꾸는 것을 반복한다.선택 정렬 예시 선택정렬은 N번 만큼 가장 작은 수를 찾아서 맨 앞으로 보내야 한다 따라서 시간복잡도는 O(N
순차 탐색: 리스트 안에 있는 특정한 데이터를 찾기 위해 앞에서부터 데이터를 하나씩 확인하는 방법 이진 탐색: 정렬되어 있는 리스트에서 탐색 범위를 절반씩 좁혀가며 데이터를 탐색하는 방법 이진 탐색은 시작점, 끝점, 중간점을 이용하여 탐색 범위를 설정한다. 단계마다
최단 경로 알고리즘은 가장 짧은 경로를 찾는 알고리즘을 의미함 다양한 문제 상황 한 지점에서 다른 한 지점까지의 최단 경로 한 지점에서 다른 모든 지점까지의 최단 경로 모든 지점에서 다른 모든 지점까지의 최단 경로 각 지점은 그래프에서 노드로 연결된 도로는 간선
우리가 일반적으로 두 문자열의 공통부분을 탐색할 때 이용하는 방법은 Brute Force 알고리즘이다. 이런 식으로 계속 탐색해나가다보면 원본 문자열의 길이가 N, 탐색 문자열의 길이가 M 일 때 시간복잡도가 O(NM) 이 된다. 하지만 이 방식은 너무 느리기 때문에