|
| 1 | +# Brute force |
| 2 | + |
| 3 | +BF관련 알고리즘 정리로 `알고리즘 문제 해결 전략책`을 읽고 해당 내용을 토대로 문제 풀이, 내용 정리를 진행한다. |
| 4 | + |
| 5 | +[무식하게 풀기 정리 내용](https://github.com/fkdl0048/BookReview/issues/194) |
| 6 | + |
| 7 | +알고리즘을 순차적으로 공부해야겠다고 마음을 먹고 책을 구매했다. |
| 8 | + |
| 9 | +단순 문제풀이보단 개념에 대한 명확한 이해 후 활용을 통한 학습이 더 값지고 오래갈 것 같다고 생각해서 책에서 추천하는 초심자 커리큘럼으로 진행했다. |
| 10 | + |
| 11 | +[책 내용 총 정리](https://github.com/fkdl0048/BookReview/issues/188) |
| 12 | + |
| 13 | +최근에 6장을 마무리하게 되어서 한번 내용을 되짚어보며 글을 작성한다. |
| 14 | + |
| 15 | +추가로 실제 작업중인 프로젝트에 적용된 내용이 있어 리뷰한다. |
| 16 | + |
| 17 | +이후로도 공부하게 되는 다양한 알고리즘에 재귀는 필수적인 내용이라 이를 학습하기에 가장 좋은 시작이었다. |
| 18 | + |
| 19 | +BF에 관한 자세한 내용은 위 정리 내용을 참고하는게 좋을 것 같고 핵심적인 부분을 다시 짚어본다. |
| 20 | + |
| 21 | +- 무식하게 푼다고 해서 좋지 못한 알고리즘이 아니다. 어떤 때에는 가장 빠르다. |
| 22 | +- 재귀 호출에는 기저 사례를 잘 처리해야 한다. ('더이상 쪼개지지 않는' 최소한의 작업) |
| 23 | +- 풀이하기 위해 문제를 분할하고 기저사례를 선택하여 구조를 만든다. |
| 24 | + - 완전 탐색은 존재하는 모든 답을 하나씩 검사하므로, 걸리는 시간은 가능한 답의 수에 정확히 비례한다. |
| 25 | + - 최대 크기의 입력을 가정했을 때 갑의 개수를 계산하고 이들을 모두 제한 시간 안에 생성할 수 있는지 가늠한다. (적용할 수 없으면 동적 계획법을 사용한다.) |
| 26 | + - 가능한 모든 답의 후보를 만드는 과정을 여러 개의 선택으로 나눈다. |
| 27 | + - 각 선택은 답의 후보를 만드는 과정의 한 조각이 된다. |
| 28 | + - 그중 하나의 조각을 선택해 답의 일부를 만들고, 나머지 답을 재귀 호출을 통해 완성한다. |
| 29 | + - 조각이 하나밖에 남지 않은 경우, 혹은 하나도 남지 않은 경우에는 답을 생성했으므로, 이것을 기저 사례로 선택해 처리한다 |
| 30 | +- 풀이할 때 중요한 점은 손으로 경우의 수를 계산하여 실제 답의 수의 상한을 예측해보는 것이다. |
| 31 | +- 중복을 세는 문제를 조심해라 |
| 32 | + |
| 33 | +풀이한 문제는 총 4개로 BOGGLE, PICNIC, BOARDCOVER ,CLOCKSYNC이다. |
| 34 | + |
| 35 | +모든 문제는 `C#`으로 풀이했으며 책의 수도코드와 다른 형태를 가진다. |
| 36 | + |
| 37 | +## BOGGLE |
| 38 | + |
| 39 | +- [풀이 설명 링크](https://github.com/BRIDGE-DEV/BRIDGE_Algorithm/pull/8) |
| 40 | + |
| 41 | +## PICNIC |
| 42 | + |
| 43 | +- [풀이 설명 링크](https://github.com/BRIDGE-DEV/BRIDGE_Algorithm/pull/27) |
| 44 | + |
| 45 | +## BOARDCOVER |
| 46 | + |
| 47 | +- [풀이 설명 링크](https://github.com/BRIDGE-DEV/BRIDGE_Algorithm/pull/28) |
| 48 | + |
| 49 | +## CLOCKSYNC |
| 50 | + |
| 51 | +- [풀이 설명 링크](https://github.com/BRIDGE-DEV/BRIDGE_Algorithm/pull/29) |
| 52 | + |
| 53 | +## 3MatchPuzzle |
| 54 | + |
| 55 | +- [풀이 설명 링크](https://github.com/BRIDGE-DEV/BRIDGE_Algorithm/pull/30) |
| 56 | + |
| 57 | +*책에는 없는 문제로 프로젝트에 적용된 코드이다.* |
| 58 | + |
| 59 | +혹시 수정되면 좋은 부분이 있다면 알려주시면 감사합니다. |
0 commit comments