Review

[Review] 2020-03-10 알고리즘 스터디 – 12 Week Challenge

SQL Angeles 2020. 3. 11. 13:44

[Review] 2020-03-10 알고리즘 스터디 – 12 Week Challenge

 

SQL AngelesLA 한인 IT 커뮤니티 그룹으로 다양한 IT 기술을 공부하며 회원들의 소통을 공유 합니다. 현재 다양한 스터디를 운영하고 있으며 각종 공지를 위한 포럼, 그룹채팅을 운영하고 있습니다. 커뮤니티는 회원제로 운영되고 있으며 참여의 제한은 없습니다. 스터디 참여를 원하시거나 교류를 원하시는 분은 아래 홈페이지에서 상세 내용을 확인할 수 있습니다.

·         문의메일 : Leo.Sungwook.Kang@gmail.com

·         KAKAO : SQLMVP

·          SQL Angeles 공식 홈페이지 : http://SQLAngeles.com

·          공식 Facebook 그룹 : https://www.facebook.com/groups/SQLAngeles/

 

오늘은 SQL Angeles에서 준비한 12주 프로젝트로, 온라인 알고리즘 스터디의 9주차를 진행하였습니다. SQL Angeles의 온라인 미팅은 최대 100명이 참여할 수 있으며 상시 스터디원을 모집하고 있습니다.

 

온라인 미팅은 PC 뿐만 아니라, 태블릿, 스마트폰에서도 참여가 가능하기 때문에 앞으로도 많은 참여 부탁 드립니다.

 

2주차 스터디 주제는 Selection Sort로 진행 하였습니다.

·          Week 1: Introduction to algorithms (1/7/2020)

·          Week 2: Selection sort (1/14/2020)

·          Week 3: Recursion (1/21/2020)

·          Week 4: Quicksort (1/28/2020)

·          Week 5: Hash tables (2/4/2020)

·          Week 6: Breadth-first search (2/11/2020)

·          Week 7: Dijkstra's algorithm (2/18/2020)

·          Week 8: Greedy algorithms (3/3/2020)

·          Week 9-10: Dynamic programming (3/10/2020)

·          Week 11: K-nearest neighbors

·          Week 12: Basic codding interview skills

 

 

오늘의 주제는 Dynamic Programming 입니다. 동적 계획법(動的計劃法, dynamic programming)이란 복잡한 문제를 간단한 여러 개의 문제로 나누어 푸는 방법을 말한다. 이것은 부분 문제 반복과 최적 부분 구조를 가지고 있는 알고리즘을 일반적인 방법에 비해 더욱 적은 시간 내에 풀 때 사용한다. 동적 계획법의 원리는 매우 간단하다. 일반적으로 주어진 문제를 풀기 위해서, 문제를 여러 개의 하위 문제(subproblem)로 나누어 푼 다음, 그것을 결합하여 최종적인 목적에 도달하는 것이다. 각 하위 문제의 해결을 계산한 뒤, 그 해결책을 저장하여 후에 같은 하위 문제가 나왔을 경우 그것을 간단하게 해결할 수 있다. 이러한 방법으로 동적 계획법은 계산 횟수를 줄일 수 있다. 특히 이 방법은 하위 문제의 수가 기하급수적으로 증가할 때 유용하다.

(출처 : https://ko.wikipedia.org/wiki/%EB%8F%99%EC%A0%81_%EA%B3%84%ED%9A%8D%EB%B2%95)

 

 

 

스터디 내용은 NDA이며 저희는 취업을 보장하지는 않습니다.

 

 

오늘은 9주차 입니다. 이제 정말 끝이 얼마 남지 않았습니다.

 

 

이번 챕터에서 다루게 될 내용입니다.

 

 

어떻게 하면 가장 효율적(최대한 많이)으로 바구니에 담을 수 있을까 하는 문제로 (실제로는 도둑 물건을 훔칠 때 어떤 조합이 가장 이득이 되는지 구하는 문제) 수식에 의한 계산된 값을 표에 넣어 봄으로써 최적의 값을 찾아보았습니다.

 

Memoization은 기록하면 문제를 푸는 방식으로 이전 값을 가지고 있기 때문에 계속해서 반복적인 재계산을 하지 않아도 빠르게 결과를 도출할 수 있습니다. 실제 마지막 실습에서 엄청난 시간 차이를 경험할 수 있었습니다.

 

 

이론의 마지막은 실습입니다. 파이썬 코드를 활용하여 얼마나 빠르게 결과를 만들어 낼 수 있는지 확인하였습니다.

 

 

 

 

다음 스터디에도 항상 발전하는 스터디가 되기를 기대하면서 오늘 하루도 고생 많으셨습니다.

 

2020-03-10 / http://sqlangeles.com

 

 

LA 한인 SQL 스터디 모임, LA IT 모임, OC IT 모임, SQL 스터디, 개발 스터디, SQL Angeles, IT 커뮤니티, OC IT 커뮤니티, 알고리즘 스터디, 온라인 스터디