반응형
Brute-Force !?
컴퓨터 과학에서 시행착오 방법론이라고 말하고, 암호학에서도 사용한다. 이는 어떤 암호를 풀기 위해 모든 값을 대입해서 찾아내는 방법으로 지능적인 전략을 사용하지 않는다. 예를 들어 0000 ~ 9999 자물쇠가 있다면 모든 수를 대입해보는 방식인 것이다.
Brute Force Algorithm ?!
의미
- 위 뜻과 마찬가지로 무차별 적인 대입하는 방법으로 모든 가능성을 시도하는 것이다. 따라서 공간 복잡도와 시간 복잡도를 전혀 고려하지 않은 방법이다. 때문에 최적의 솔루션이 될 수 없다.
사용 조건
- 프로세스 속도를 높이는 데 사용할 다른 방법이 없을 경우
- 문제를 해결할 여러 솔루션이 있고 각 솔루션을 확인해야 할 때
주요 활용 알고리즘
- 순차 검색 알고리즘 (Sequential Search
: 배열 안에 특정 값이 존재하는지 인덱스 0부터 순차적으로 검색 - 문열 매칭 알고리즘 (Brute-Force String Matching)
: 길이가 n인 전체 문자열이 m인 문자열 패턴을 포함하는지 검색할 때 - 선택 정렬 알고리즘 (Selection Sort)
: 전체 배열을 검색하여 현재 인덱스 값과 순회하는 배열 값과 비교하여 오름차순/ 내림차순에 따라 정렬하는 것
그 외 활용 알고리즘
- 버블 정렬 알고리즘 (Bubble Sort)
- Tree 자료 구조의 완전 탐색 알고리즘 Exhausive Search (BFS, DFS)
- 동적 프로그래밍 - DP(Dynamic Programing)
반응형
'IT 정보 > Java' 카테고리의 다른 글
[Java] 탐색 알고리즘!? (Search Algorithm) (29) | 2022.05.31 |
---|---|
[Java] 탐욕 알고리즘 (Greedy) (16) | 2022.05.30 |
[Java] 시간 복잡도 (Time Complexity) (9) | 2022.05.30 |
[Java] Optional Class (14) | 2022.05.28 |
[Java] 스트림 (Stream) (스트림 생성) (6) | 2022.05.28 |