1. Toy Problem
8월로 넘어오면서 이제부터는 매일 아침 Toy 문제를 푸는 과제가 생겼다. 위 문제의 경우 처음에는 Delete를 사용하여 중복을 제거하면 되지 않을까? 생각하였지만 그렇게 하면 문제가 더 복잡해질 것 같아 포기하였다.
이후 생각한 것은 재귀함수를 이용하면 쉽게 풀 수 있을 것이라 생각하였고 결국 재귀를 사용하여 풀었다. 첫 번째 문자를 두번째 문자부터 비교하여 같지 않은 값들을 결과값에 배열로 넣고 그 배열에서 중복이 있는지 없는지 검사하여 만약 중복이 있다면 또 한번 재귀로 함수를 돌려 최종적으로 중복 값을 다 없앤 배열을 만든 후 그 중 첫번째 값을 리턴하는 함수로 과제를 해결하였다.
2. N-Queens
알고리즘에 대해 더욱 공부하기 위한 과제로 N-Queens라는 체스 Sprint를 진행하게 되었다. 코드스테이츠에서도 아직 우리가 해결하기 힘든 과제라 힌트도 많이 주고 못풀더라도 좌절하지 말고 알고리즘을 해석하고 구성하는 능력을 기를 수 있는 시간이 되었으면 한다고 전했다. 우선 어려운 과제인만큼 Team을 구성해서 전략적으로 이 알고리즘 문제를 어떻게 하면 풀 수 있을지 하는 시간을 가졌다. 이 시간을 통해 Sprint에서 원하는 요구사항을 정리하고 우리가 해결해야할 문제들의 접근 방법에 대해 공부 할 수 있었다.
1) 깊이 우선 탐색 DFS(Depth-First Search) vs 너비 우선 탐색 BFS(Breadth First Search)
2) 백트래킹(Backtracking)
백트래킹에서 알아야 할 것은 유먕성에 대해서이다. 백트래킹은 유망하지 않은 자식에 대해서는 탐색을 하지 않는다. 오직 유망성이 있는 자식에 대해서만 깊이 있게 탐색을 진행한다. 백트래킹 자체는 개념이고 우리는 과제를 통해 이 백트래킹을 구현하는 과정도 해야할 것으로 예상하고 있다.
출처 : https://thd0011.tistory.com/19
[알고리즘] 백트래킹 (Backtracking) 알고리즘
백트래킹 기본적으로 백트래킹은 '가능한 모든 방법을 탐색한다' 는데 기본 아이디어가 있다. 대표적인 완전 탐색 방법으로는 DFS (Depth First Search, 깊이 우선 탐색) 이 있다. DFS 는 현재 지점에서 �
thd0011.tistory.com
위의 개념을 알고 현재 함수들을 작성 중이다. 내일까지 완성하는 과제이지만 아무래도 50%정도 완성하면 잘한 것으로 예상한다. 그렇다고해도 100% 할 수 있도록 노력하는 자세로 끝까지 해보도록 하겠다. 아자!
'TIL (Today I learn)' 카테고리의 다른 글
8월 20일 (목)_React (ES6 & JSX) (1) | 2020.08.21 |
---|---|
8월 19일 (수)_Server 용어 (1) | 2020.08.19 |
7월 23일 (목)_Data Structures, Stack, Queue (1) | 2020.07.23 |
7월 21일 (화)_Jest, ESlint (0) | 2020.07.21 |
7월 20일 (월)_Immersive OT, Node.js (0) | 2020.07.20 |