티스토리 뷰
이전 포스트
http://ingyeoking13.tistory.com/162
경우의 수를 이용한 알고리즘
완전탐색 (Brute Force)
않음 말구...
사실 주어진 배열에서 가장 큰 값을 찾는 것이 가장 간단한 완전탐색이라고 할 수 있습니다. 왜냐하면 sequence 내의 모든 수를 비교하면서 가장 큰 값을 찾기 때문이죠.
배열내 가장 큰 값을 찾는 알고리즘 <-- 기억안나면 클릭
버블, 삽입, 선택정렬 또한 완전탐색 알고리즘이라고 할 수 있습니다. 확실히 퀵 정렬 보다 덜 효율적입니다.
완전탐색 해킹?
https://github.com/ingyeoking13/algorithm/blob/master/tistory/ch6/brute.c
좀 더 그럴듯한 완전탐색을 이용한 비밀번호뚫기를 만들어보았습니다.
코드보기
https://github.com/ingyeoking13/algorithm/blob/master/tistory/ch6/brute2.c
33자에 6자리라, 33^6, 1291467969 경우의 수이네요. 연산속도가 매우 느릴겁니다. 연산수 1억당 1초라고하면 12초정도 걸리겠습니다. 터미널에 출력하는 것말고 출력결과를 파일로 떨어뜨리면 체감속도가 더 빠를겁니다.
브루트포스는 반드시 중첩 for문으로 푸는게 아니지만 해당 문제가 요구하는 것이 꼭 중첩 for문 같은 명제들로 이루어져있습니다. 모든 경우의 수를 다 해본다는거죠! 브루트 포스 문제는 연산수가 n*n*n .....이런 n의 몇 승 형식, a*b*c... 라는 개별적인 사건 경우의수의 곱 이라거나 n*(n-1) *(n-2)* .. 이런 팩토리얼형식입니다.
브루트포스를 이용해서 풀 수 있는 문제들
백준 온라인저지 브루트포스 문제집
이 문제 또한 brute force로 풀수있습니다. (다이내믹 프로그래밍으로 분류되어있지만 ㅠ.ㅠ...)
https://www.acmicpc.net/problem/9095
소스보기 ( 변태적인 for문을 볼 수 있습니다. 예, 전 변태입니다. 연산수는 3^10승입니다.)
https://github.com/ingyeoking13/algorithm/blob/master/bj/p1000/p9095_brute.c
브루트포스의 개념을 이용한 것이 dp 이고, dp 또한 모든 경우의 수를 다 해봅니다. 그러니까 표현하자면 "조심스럽게 사용하는 완전탐색에 가깝다"라고 불리기도 합니다. 그러나, 좀 더 똑똑한 방식으로 하는 것이죠. 브루트 포스는 지수시간 복잡도인 반면에, dp는 다항시간안에 연산이 가능합니다. 그리고 dp는 매우 다양한 난이도인 초, 중, 고급 알고리즘 문제들로 만날 수 있습니다.
우선 dp설명은 여기까지하고, 다음 컨테츠인 순열조합으로 넘어가보죠
순열과조합은 factorial의 연산수가 나옵니다.
순열과 조합은,, 근데 포스트 길이가 너무기네 다음 포스트로 넘어갈게요
'Discrete mathmatics and Problem Solving > 6, 8 경우의 수와 그 응용(dp)' 카테고리의 다른 글
6 순열과 조합 : 조합의 구현 (0) | 2017.10.16 |
---|---|
6 순열과 조합의 구현 - 순열편 (0) | 2017.10.15 |
6 순열과 조합 (0) | 2017.10.14 |
6 경우의 수 덧셈규칙 (0) | 2017.10.11 |
6 경우의 수 (곱셈 규칙) (0) | 2017.10.09 |
- Total
- Today
- Yesterday
- 명제논리
- 자바스크립트
- 자바스크립트 예제
- 아레나시뮬레이션
- 백준
- beginning javascript
- 엄청난 인내심과 시뮬레이션을 위한 아레나 툴
- Arena
- 데이터 중심 애플리케이션 설계
- 그라파나
- Discrete Mathematics
- 아레나 시뮬레이션
- Trie
- javascript
- 조합 코딩
- 이산수학
- Simulation
- grafana cloud
- 로젠
- arena simulation
- 최단경로 알고리즘
- 대규모 시스템 설계 기초
- Propositional and Predicate Logic
- 이산 수학
- rosen
- paul wilton
- flutter
- 가상 면접 사례로 배우는 대규모 시스템 설계 기초
- 아레나
- 시뮬레이션
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |