# DP

34개의 포스트

DP - 문제(2)

https://www.acmicpc.net/problem/11052N개의 카드를 구매해야한다.카드팩은 총 N가지 종류가 존재한다. i번째 카드팩은 i개의 카드를 담고 있고,카드팩의 가격은 Pi원이다.카드 N개를 구매하는데 드는 비용의 최대값을 구하는 문제.점화

2020년 3월 24일
·
0개의 댓글

다이나믹 프로그래밍

큰 문제를 작은 문제로 나누어 푸는 방법은 크게 두 가지가 존재하는데 하나는 분할정복(Divid & Conqer)이고, 나머지 하나가 다이나믹 프로그램이다. 이 둘의 차이점은 다이나믹 프로그래밍은 큰 문제가 작은 문제로 나누어서 졌을 때 작은 문제들의 중복이 허용되지만

2020년 3월 22일
·
0개의 댓글
post-thumbnail

정수삼각형-백준(python)

위 그림은 크기가 5인 정수 삼각형의 한 모습이다.맨 위층 7부터 시작해서 아래에 있는 수 중 하나를 선택하여 아래층으로 내려올 때, 이제까지 선택된 수의 합이 최대가 되는 경로를 구하는 프로그램을 작성하라. 아래층에 있는 수는 현재 층에서 선택된 수의 대각선 왼쪽 또

2020년 3월 21일
·
0개의 댓글
post-thumbnail

스티커-백준 9465번(python)

상근이의 여동생 상냥이는 문방구에서 스티커 2n개를 구매했다. 스티커는 그림 (a)와 같이 2행 n열로 배치되어 있다. 상냥이는 스티커를 이용해 책상을 꾸미려고 한다.상냥이가 구매한 스티커의 품질은 매우 좋지 않다. 스티커 한 장을 떼면, 그 스티커와 변을 공유하는 스

2020년 3월 19일
·
0개의 댓글

[해커랭크] The Coin Change Problem

두번 풀어도 모르겠는 dp

2020년 3월 11일
·
0개의 댓글
post-thumbnail

[프로그래머스] 정수 삼각형

다이나믹 프로그래밍 for문 풀이

2020년 3월 6일
·
0개의 댓글
post-thumbnail

[Algorithms] Dynamic Programming, 동적 계획법

What is it 입력 크기가 작은 부분 문제들을 해결한 후, 해당 부분 문제의 해를 활용해 보다 큰 크기의 부분 문제를 해결. 최종적으로 전체 문제를 해결하는 알고리즘 상향식 접근법으로, 가장 최하위 해답을 구한 후 이를 저장. 해당 결과값을 이용해 상위 문제를 풀

2020년 3월 3일
·
0개의 댓글
post-thumbnail

프로그래머스 정수 삼각형

동적 계획법(DP)을 사용하는 문제최대 높이가 500인 삼각형이 주어집니다. (1 <= n <= 500)삼각형을 이루고 있는 숫자는 0 이상 9,999 이하의 정수입니다.아래 칸으로 이동할 때는 대각선 방향으로 한 칸 오른쪽 또는 왼쪽으로만 이동 가능합니다

2020년 2월 16일
·
0개의 댓글

백준 11052 카드 구매하기

풀이 이중 for문을 돌며 N개의 카드를 구입 시 Pn개를 구입하는 경우와 그 전의 경우의 수들 중 max값을 찾아내는 d[i] = Math.max(d[i], d[i-j]+card[j])의 점화식을 통해서 구현 주의사항 Top-down방식으로 재귀를 활용할 시 이중for문은 안의 for문을 재귀함수의 내부에 넣어서 구현한다. 소스코드 Top-down 방...

2019년 12월 30일
·
0개의 댓글

백준 11726 2*N 타일링 (Java)

풀이 피보나치 수열과 같은방식으로 가로로 만들 때와 세로로 만들 때의 경우를 합해주면 그다음 번의 경우의 수가 나오는 방식이다. 주의사항 Top-down 방식으로 풀 시 memorization을 사용해주어야 시간초과가 나지 않는다. %10007 연산을 마지막에만 해주는 것이 아니라 d[n]을 구할 때마다 해주어야 한다. 이유 나머지연산 공식 (A+B) ...

2019년 12월 30일
·
0개의 댓글

백준 11052 카드구매하기 (NodeJs)

주의사항 Top down방식 일때 memoiazation 해주지 않으면 시간초과 발생 Top down let input = []; let d = []; var require = require("readline") .createInterface(process.stdin, process.stdout) .on("line", fu...

2019년 12월 30일
·
0개의 댓글

백준 11726 2*n타일링 (NodeJs)

주의사항 Top Down 형식으로 풀때 memoization을 해줘야지 시간초과가 발생하지 않음 출력 할때 모든 계산을 한 뒤 나머지 연산을 하면 범위를 초과해서 오버플로우 발생하므로 매번 나머지 연산을 한 뒤 값을 저장해야함 풀이코드 Top Down let dp = []; let input = []; var require = req...

2019년 12월 30일
·
0개의 댓글

2019 winter PS --version DP(day 1)

백준 2748, 1003, 1904. (스포를 조금 하자면 셋다 Fibonacci 관련 문제임). 1) 2748 Just Fibonacci문제. Recursion 방식으로 하면 Time Complexity에 문제가 있으니 DP방식으로 풀면 좋음. https://github.com/JangJuMan/2019-winter-PS/blob/master/...

2019년 12월 23일
·
0개의 댓글

Boggle game

boggle.png (출처) https://algospot.com/judge/problem/read/BOGGLE 본 문제는 완전탐색으로 풀려면 대략 25 * (8^n) 개의 경우의 수를 전부 확인해야하고, 그에따라 해당 횟수만큼 반복문을 수행해야한다. (n은 주어진 단어의 길이 - PRETTY, GIRL, REPEAT) 최악의 경우 25 * 10억...

2019년 10월 11일
·
0개의 댓글

동적 계획법 테크닉 정수 이외의 입력에 대한 메모이제이션 문제 2 - 실험 데이터 복구

문제 풀이 > 1. k개의 문자열들의 앞뒤로 겹치는 범위 파악하기 현재 사용한 문자열, 마지막으로 사용한 문자열을 파라미터, 캐쉬 인덱스로 사용 모든 문자열을 사용한 경우 기저사례 겹치는 범위(overlap)가 최대가 되게끔 재귀 함수 호출 재귀 함수의 값과 선택하려는 문자열이 최종 값과 같다면 해당 문자열을 선택하는 것이므로 해당 정보를 이용해 최종 문자...

2019년 7월 31일
·
0개의 댓글

동적 계획법 테크닉 정수 이외의 입력에 대한 메모이제이션 문제 1 - 웨브바짐

image.png 문제 풀이 > 가격을 구성하는 숫자들을 재배열 하는데, 이전 가격 e이하이면서 m으로 나누어 떨어지는 숫자를 찾는 문제이다. 가격의 최대 자릿수가 14자리까지 가능하므로 단순한 완전 탐색으로는 풀 수 없는 문제이다. > 가격이 될 수 있는 몇조개의 숫자를 모두 메모이제이션하면 부분 문제의 수가 너무 많아져 비효율적이 된다. 따라서 ...

2019년 7월 31일
·
0개의 댓글

동적 계획법 테크닉 - 정수 이외의 입력에 대한 메모이제이션

필요성 > 일반적으로 DP를 사용할 때 저장된 값의 인덱스는 정수이다. 그러나 저장하려는 값이 정수가 아니라 배열일 경우 캐쉬에 해당 값을 저장하고 불러오는 게 매우 불편하다. 이 때 map자료구조를 사용할 수 있는데 , map자료구조는 비교와 연산에 시간이 오래걸리기 때문에 적합하지 않다 일대일 함수 > 입력에 대해 정수와 일대일 함수를 만들어 주면 배...

2019년 7월 30일
·
0개의 댓글

동적 계획법 테크닉 문제 2 드래곤 커브

image.png 문제 파악 > 처음 문제를 봤을 때는 세대 별 규칙을 파악해서 그 세대에 해당하는 문자열부터 시작해서 아래 세대로 쪼개서 내려가면서 해당 위치에 있는 문자열들을 찾는 방식일 것이라고 어렴풋이 생각했다. > 세대 별 문자열들 간의 규칙 까지는 찾았는데 해당 문자열들을 찾아나가는 방식이 생각이 나지 않았다. > 내가 생각했을 때 세대 별...

2019년 7월 30일
·
0개의 댓글

동적 계획법 테크닉 문제 1 - KLIS

image.png 문제 파악 > DP를 통해 일반적으로 해결하는 문제의 답은 총 개수나 최종적인 확률을 구하는 문제이다. k번째 해당하는 답의 실제 값을 구하는 것은 추가적인 처리가 필요하다. DP가 동작하는 과정에서 총 개수를 기록해놓고 k번째 값을 찾아나가는데 이 때 앞에서부터 하나씩 볼 경우 지나치게 많은 시간이 소요되므로 문제의 특성에 따라 한 ...

2019년 7월 30일
·
0개의 댓글

DP 테크닉 실제 답 계산하게 문제1 여행 짐 싸기

image.png 문제 풀이 > 대표적인 가방 채우기 문제, 탑 다운 방식으로 해결하려고 했으나 캐쉬를 잘못 저장해 시간이 많이 소요 되었다. > 실제 답을 계산하는 방식은 갱신될 때 기록하는 방법이 있는데 이 문제의 경우 필요 없는 아이템은 캐쉬값을 비교함으로서 제거될 수 있다. 추가 학습 필요

2019년 7월 26일
·
0개의 댓글