일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 백준구현문제
- JS프로그래머스
- 자바스크립트
- 알고리즘
- css기초
- 프로그래머스JS
- 백준알고리즘
- CSS
- 프로그래머스
- 백준
- 백준골드
- HTML
- 백준구현
- 코테
- 다이나믹프로그래밍
- 안드로이드 스튜디오
- 백준js
- 익스프레스
- dp알고리즘
- 포이마웹
- js코테
- 리액트커뮤니티
- 코딩테스트
- 리액트댓글기능
- JS
- HTML5
- 백준nodejs
- 리액트
- 프로그래머스코테
- 몽고DB
- Today
- Total
목록다이나믹프로그래밍 (5)
개발새발 로그

최대점수 구하기(냅색 알고리즘) 이번 정보올림피아드대회에서 좋은 성적을 내기 위하여 현수는 선생님이 주신 N개의 문제를 풀려고 합니다. 각 문제는 그것을 풀었을 때 얻는 점수와 푸는 데 걸리는 시간이 주어지게 됩니다. 제한시간 M안에 N개의 문제 중 최대점수를 얻을 수 있도록 해야 합니다. (해당문제는 해당시간이 걸리면 푸는 걸로 간주한다, 한 유형당 한개만 풀 수 있습니다.) ▣ 입력설명 첫 번째 줄에 문제의 개수N(1=0;i--){ dy[i]=Math.max(dy[i-time]+num,dy[i]) } } console.log(dy[N]);

동전교환(냅색 알고리즘) 다음과 같이 여러 단위의 동전들이 주어져 있을 때 거스름돈을 가장 적은 수의 동전으로 교환 해주려면 어떻게 주면 되는가? 각 단위의 동전은 무한정 쓸 수 있다. 입력설명 첫번째 줄에는 동전의 종류개수 N(1

동적 계획법 중 최대 부분 증가 수열(LIS)를 구하는 문제가 있다. 아래 예제를 살펴보자 최대 부분 증가수열 N개의 자연수로 이루어진 수열이 주어졌을 때, 그 중에서 가장 길게 증가하는(작은 수에서 큰 수로) 원소들의 집합을 찾는 프로그램을 작성하라. 예를 들어, 원소가 2, 7, 5, 8, 6, 4, 7, 12, 3 이면 가장 길게 증가하도록 원소들을 차례대로 뽑아내면 2, 5, 6, 7, 12를 뽑아내어 길이가 5인 최대 부분 증가수열을 만들 수 있다. 입력설명 첫째 줄은 입력되는 데이터의 수 N(1arr[1]이 성사된다. 그리고 arr[2]>arr[0] 또한 성사된다. 이때 둘 중 수열의 길이가 더 큰 것과 arr[2]와 합쳐서 dy배열에 넣는다. 이제 코드를 작성해보자. let arr=[5,3,..

https://www.acmicpc.net/problem/2133 2133번: 타일 채우기 3×N 크기의 벽을 2×1, 1×2 크기의 타일로 채우는 경우의 수를 구해보자. www.acmicpc.net 3×N 크기의 벽을 2×1, 1×2 크기의 타일로 채우는 경우의 수를 구해보자. 입력 첫째 줄에 N(1 ≤ N ≤ 30)이 주어진다. 출력 첫째 줄에 경우의 수를 출력한다. 아래 그림은 3×12 벽을 타일로 채운 예시이다. 이전 문제와 똑같이 생각하면된다. 1칸을 뺐을 때와 2칸을 뺐을 때를 일단 구해본다. 그럼 위와같이 n-1일 때는 0가지, n-2일 때는 3가지가 나온다. 그러면 D[2] = 3 * D[n-2] 라는 식이 나온다. ->하지만 이 식은 정답이 아니다. 한번 3칸이 뺐을 경우를 계산 해보자...

다이나믹 프로그래밍이란 주어진 문제를 한 번의 수행으로 풀도록하는 알고리즘이다. 보편적으로 분할정복기법을 사용하는데 이 기법은 동일한 수행을 다시해야한다는 단점이있다. 이러한 대표적인 예시가 피보나치수열 피보나치 수열에서 F(15)를 구하려면 F(14)와 F(13)을 구해야한다. F(14)를 구하려면 F(13)과 F(12)를... 이런식으로 나아간다. -> 비효율적 이럴 때 예를 들어 F(12)가 중복적으로 나오는 경우가 생길 것이다. 이렇게 되면 동일한 데이터를 반복적으로 불필요하게 실행하게 된다. ->단순하게 분할정복기법을 사용하면 안된다. ->이럴 때 다이나믹 프로그래밍 기법을 사용해야한다. 다이나믹 프로그래밍은 다음의 예시에 사용가능하다. -큰 문제를 작은문제로 나눌 수 있다. -작은 문제에서 구..