Dynamic Programming(동적계획법) vs Divide and Conquer(분할 정복)
·
Algorithm/Theory
Dynamic Programming(동적계획법)과 Divide and Conquer(분할 정복)의 차이를 알아보자. 차이를 알아보기에 앞서 동적계획법을 알아보자. Dynamic Programming(동적 계획법) Dynamic Programming은 최적화와 연관이 있어, 'Dynamic Optimization'으로 불리기도 한다. 그러면, Dynamic Programming이 도대체 성능과 어떠한 연관이 있는 것일까? Dynamic Programming 알고리즘은 복잡해 보이는 문제를 하위의 작은 문제들로 쪼개고, 하위 문제들의 결과를 별도의 저장공간에 저장을 한다. 이렇게 함으로써, 동일한 하위 문제가 나왔을 때 중복해서 계산을 할 필요가 없도록 한다. 좀 더 나은 이해는 이전 포스팅인 피보나치 문제..
Data Structure(자료구조)와 Algorithm(알고리즘)
·
Algorithm/Theory
Data Structure(자료구조) 컴퓨터 과학에서 효율적인 접근 및 수정을 가능하게 하는 자료의 조직, 관리, 저장을 의미 데이터 값의 모임, 데이터 간의 관계, 그리고 데이터에 적용할 수 있는 함수나 명령을 의미 신중히 선택한 자료구조는 보다 효율적인 알고리즘을 사용할 수 있게 함 효율적인 자료구조란 프로그램의 실행시간 효율과 저장공간 효율을 의미함 각 자료구조의 장단점을 숙지하고 상황별로 적합한 자료구조를 선택하는 능력이 중요 자료구조의 분류 https://wayhome25.github.io/cs/2017/04/17/cs-18/ 단순구조 : 프로그래밍에서 사용되는 기본 데이터 타입 선형구조 : 저장되는 자료의 전후 관계가 1:1 인 구조 (리스트, 스택, 큐 등) 비선형구조: 데이터 항목 사이의 ..
[Algorithm - Theory]반복문과 재귀함수의 차이
·
Algorithm/Theory
알고리즘 문제를 풀면서 DFS, DP, Brute Force, Combination 등의 문제를 풀다 보면 간혹 의문이 생긴다. 나는 보통 위와 관련된 알고리즘 문제를 풀 때 재귀함수 를 이용한다. 문제에 따라 달라지긴 하겠지만 반복문, 재귀함수 모두 구현이 가능한것으로 알고있다. 습관적인 부분도 있겠지만 반복문 으로 생각하다가 재귀함수로 바꿔서 푸는 경우도 많았고 그냥 편하다 재귀함수 로 푸는 것이. 왜 그럴까? 반복문 과 재귀함수 의 차이를 알아보자. https://wonillism.tistory.com/20 [Programmers - lv02] 피보나치 수 (cpp / python) 피보나치 수 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 ..
WONILLISM
'Algorithm/Theory' 카테고리의 글 목록