본문 바로가기
반응형

DP6

BOJ 14501 - 퇴사 / C++ 문제 링크 : https://www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 풀이 문제의 형태 덕분에 DP로 풀이해야한다는 것은 쉽게 감이 오지만 점화식을 세우기는 어렵다. 먼저 i일에 할 수 있는 행동을 생각해보면 1. Ti 만큼의 날짜를 소요하여 Pi를 획득한다. 2. 그냥 i+1로 건너뛴다. 1번 경우에는 DP[i + Ti] + P[i] = DP[i]가 될 것이고 2번 경우에는 DP[i + 1] = DP[i]이 될 것이다. 따라서, DP[i]에 대한 점화식을 DP[i] = max(DP[i + Ti] + P[i], DP[i + 1])로 세울 수 있다. 하지만, 이렇게 점화식을 세우려면 DP[.. 2022. 5. 4.
프로그래머스 - 등굣길 / C++ 문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/42898 코딩테스트 연습 - 등굣길 계속되는 폭우로 일부 지역이 물에 잠겼습니다. 물에 잠기지 않은 지역을 통해 학교를 가려고 합니다. 집에서 학교까지 가는 길은 m x n 크기의 격자모양으로 나타낼 수 있습니다. 아래 그림은 m = programmers.co.kr 문제 풀이 [1][1]에서 [2][2]로 이동할 수 있는 경우의 수는 (오른쪽으로 이동 -> 아래로 이동), (아래로 이동 -> 오른쪽으로 이동)의 2가지이다. 따라서 점화식을 세워보면 이동할 수 있는 경우의 수는 i가 행, j가 열일 때 DP[i][j] = DP[i-1][j] + DP[i][j-1]로 누적되어 나간다. DP로 더해나갈 .. 2022. 3. 8.
프로그래머스 - 정수 삼각형 / C++ 문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/43105 코딩테스트 연습 - 정수 삼각형 [[7], [3, 8], [8, 1, 0], [2, 7, 4, 4], [4, 5, 2, 6, 5]] 30 programmers.co.kr 문제 풀이 간단한 DP 문제이다. 그림에서는 삼각형이지만 실제 배열로 나타내면 [7] [3, 8] [8, 1, 0] [2, 7, 4, 4] [4, 5, 2, 6, 5] 의 형태이므로 조금 더 점화식을 세우기 쉽다. 누적 값에 현재 값을 더해나가며 DP 배열을 채워나간다 행을 i, 열을 j로 나타내면 [3, 8]에서 3에 더할 수 있는 값은 triangle[i-1][j]에 있는 7이고 8에 더할 수 있는 값은 triangle.. 2022. 3. 6.
프로그래머스 - N으로 표현 / C++ 문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/42895 코딩테스트 연습 - N으로 표현 programmers.co.kr 문제 풀이 N으로 표현할 수 있는 경우는 N 한 가지이다. 이를 DP[0]이라고 하면 DP[0] = { N }이다. N 2개로 표현할 수 있는 경우는 NN, (N+N, N-N, N*N, N/N) 이며 이를 DP[1]이라 하면 DP[1] = { NN, N+N, N-N, N*N, N/N } 이다. N 3개로 표현할 수 있는 경우는 NNN, (NN+N, NN-N, NN*N, NN/N), {(N+N)+N), (N+N)-N, (N+N)*N, (N+N)/N}, ... 이다. 이를 DP[2]라 하면 DP[2]는 DP[1]와 DP[0]의 사.. 2022. 3. 2.
반응형