일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- DFS
- 이분탐색
- Spring
- Network
- HashMap
- 해시맵
- 그리디
- boj
- 해시
- DP
- 구현
- 백준
- BFS
- Algorithm
- greedy
- 백트래킹
- DynamicProgramming
- 너비우선탐색
- 스프링
- broadcast
- 네트워크
- dynamic programming
- switch
- 브루트포스
- 동적계획법
- Backtracking
- 프로그래머스
- 알고리즘
- programmers
- 깊이우선탐색
- Today
- Total
목록DP (6)
옌의 로그
문제 [백준] LCS 9251번: LCS LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다. www.acmicpc.net 사용 알고리즘 - 다이나믹 프로그래밍 (Dynamic Programming) 해결방법 입력 받은 두 문자열 X, Y의 위치 인덱스를 각각 i, j라 할 때, 두 문자열의 최장 공통 부문 수열을 LCS(i, j)라 하자 if Xi = Yj 일 때, (두 문자열의 마지막 글자가 같을 때) LCS(i, j) = LCS(i-1, j-1) + 1 if Xi != Yj 일 때, (두 문자열의 마지막 글자가 ..

문제 [백준] 파스칼 삼각형 사용 알고리즘 - 동적계획법 (Dynamic Programming) 해결방법 파스칼의 삼각형은, x == 0 일땐 무조건 1을 가진다 dp[y][x] = dp[y-1][x-1] + dp[y-1][x] 대칭구조 이므로, 절반만 dp를 채우고, 내부 합을 구할 때 dp 값이 없는 경우, 대칭위치의 값을 사용해 연산한다 dp[3][0], dp[3][1] dp[4][0], dp[4][1] dp[5][0], dp[5][1], dp[5][2] dp[6][0], dp[6][1], dp[6][2] .... 소스코드 사용언어 : c++ #include using namespace std; int dp[31][31]; int main() { int R, C, W; cin >> R >> C >>..

문제 [백준] 크림 파스타 사용 알고리즘 - 동적계획법 (Dynamic Programming) 해결방법 dp[A배열 원소 개수] = (최대값 - 최소값)의 최대값 A배열에 값이 들어올 때 마다 A의 원소중 최소값과 비교해 최소값을 체크해준다. 들어온 값 - 최소값 과 dp[i-1]을 비교해 더 큰 값을 dp[i]에 기록해준다. A 배열에 원소가 들어올 때마다의 상황을 표로 나타낸 것 50이 들어왔을 때 원소 중 최소값 : 50 input 값과 최솟값의 차 : 0 50이 들어오기 전까지 가장 (최대값-최소값)의 최대값 : 0 dp[1] = 0 100이 들어왔을 때 원소 중 최소값 : 50 input 값과 최소값의 차 : 50 (100-50) 100이 들어오기 전까지 가장 (최대값-최소값)의 최대값 (= d..
문제 [백준] 설탕 배달 (Contest > Croatian Open Competition in Informatics > COCI 2010/2011 > Contest #7 1번) 사용 알고리즘 - 동적계획법 (Dynamic Programming) 해결방법 동전으로 금액을 만드는 문제와 같다고 보면 된다. > 3과 5를 가지고 N키로 만들기 $dp[N] = 사용한 최소 동전(설탕 봉지) 수 $dp 배열을 0으로 초기화 해준 뒤 반복문을 돌면서 채워주면 되는데, 이 때 3, 5 번째는 각 각 1개의 봉지 만으로 만들 수 있기 때문에 1로 갱신, 4의 경우 만들 수 없는 숫자기 때문에 0으로 갱신해준다. $dp[$i-3], $dp[$i-5] 의 값이 모두 있는 경우 (0보다 큰 경우) 최소 값에 1을 더해주면..

문제 [프로그래머스] N으로 표현 사용 알고리즘 - 동적계획법 (Dynamic Programming) 해결방법 dp 즉, 메모이제이션을 사용한다 N = 5 일 때, dp[N의 개수] = 만들 수 있는 정수의 집합 dp[1] = 5 dp[2] = 10, 0, 25, 1, 55 5+5, 5-5, 5*5, 5/5, 55 dp[3] = 3개의 5로 만들 수 있는 정수 집합 = dp[1] 과 dp[2]의 연산 결과 집합 = [5] (+, -, *, / ) [10, 0, 25, 1, 55] dp[4] = 4개의 5로 만들 수 있는 정수 집합 = dp[1] X dp[3] + dp[2] X dp[2] dp[5] = 5개의 5로 만들 수 있는 정수 집합 = dp[1] X dp[4] + dp[2] X d[3] -, /의 ..

문제 [프로그래머스] 정수 삼각형 사용 알고리즘 - 동적계획법(Dynamic Programming) 해결방법 2차원 db배열을 만들어 구한다. dp[i][j] == (i, j) 지점까지 가는데 발생한 최대 경비 꼭대기에서 바닥까지 이어지는 경로를 구하는데, 이 때 아래 칸으로 이동할 때는 대각선 방향으로 한 칸 오른쪽 또는 왼쪽으로만 이동 가능 dp[i][j] = max(dp[i-1][j-1], dp[i-1][j]) + triangle[i][j] dp[2][1] = max(dp[1][0], dp[1][1]) + triangle[2][1] 각 층의 첫 번째 자리는 위 층에서만 갈 수 있다 dp[i][0] = dp[i-1][0] + triangle[i][0] dp[3][0] = dp[2][0] + trian..