code 알고리즘 5

Dynamic Programming

탐욕 알고리즘이 매 순간 최적의 선택을 찾는 방식이라면, Dynamic Programming은 모든 경우의 수를 조합해 최적의 해법을 찾는 방식입니다. Dynamic Programming의 원리 주어진 문제를 여러 개의 하위 문제로 나누어 풀고, 하위 문제들의 해결 방법을 결합하여 최종 문제를 해결하는 문제 해결 방식입니다. 하위 문제를 계산한 뒤 그 해결책을 저장하고, 나중에 동일한 하위 문제를 만날 경우 저장된 해결책을 적용해 계산 횟수를 줄입니다. 조건 큰 문제를 작은 문제로 나눌 수 있고, 이 작은 문제가 중복해서 발견된다. (Overlapping Sub-problems) 작은 문제에서 구한 정답은 그것을 포함하는 큰 문제에서도 같다. 즉, 작은 문제에서 구한 정답을 큰 문제에서도 사용할 수 있다..

그리디 알고리즘

Greedy는 "탐욕스러운, 욕심 많은" 이란 뜻입니다. Greedy Algorithm(탐욕 알고리즘)은 말 그대로 선택의 순간마다 당장 눈앞에 보이는 최적의 상황만을 쫓아 최종적인 해답에 도달하는 방법입니다. 단계적으로 구분 선택 절차(Selection Procedure): 현재 상태에서의 최적의 해답을 선택합니다. 적절성 검사(Feasibility Check): 선택된 해가 문제의 조건을 만족하는지 검사합니다. 해답 검사(Solution Check): 원래의 문제가 해결되었는지 검사하고, 해결되지 않았다면 선택 절차로 돌아가 위의 과정을 반복합니다. 탐욕 알고리즘은 문제를 해결하는 과정에서 매 순간, 최적이라 생각되는 해답(locally optimal solution)을 찾으며, 이를 토대로 최종 문..

Time Complexity

시간 복잡도 표현 방법 O(1) Big-O 표기법은 입력값의 변화에 따라 연산을 실행할 때, 연산 횟수에 비해 시간이 얼마만큼 걸리는가?를 표기하는 방법입니다. O(1)는 constant complexity라고 하며, 입력값이 증가하더라도 시간이 늘어나지 않습니다. 해시 테이블의 조합 및 삽입에 해당 더보기 function O_1_algorithm(arr, index) { return arr[index]; } let arr =[1, 2, 3, 4, 5]; let index =1; let result = O_1_algorithm(arr, index); console.log(result); // 2 O(n) O(n)은 linear complexity라고 부르며, 입력값이 증가함에 따라 시간 또한 같은 비율로..

Intro to Algorithm

알고리즘이란 무엇일까요? 알고리즘은 문제를 해결하는 최선의 선택입니다. 알고리즘 문제 푸는 방법 문제를 이해 대부분의 코딩 테스트에서는 문제의 설명과 입출력예시, 제한사항, 그리고 주의사항 등으로 문제 상황을 제시합니다. 주어진 조건을 토대로 문제가 무엇인지를 이해하는 것부터 시작해야 합니다. 문제를 어떻게 해결할 수 있을지, 전략을 세워야 합니다. 연습장에 전체적인 그림을 그려가면서 페어와 나눠보세요. 전체적인 흐름을 공유할 수 있습니다. 수도코드를 작성하기 전,연습장이나 온라인 화이트보드를 사용하여 문제에 대해 논의 수도코드 작성 문제를 코드로 옮겨 보세요.

code 알고리즘 2021.11.08