DP 4

DP_기타리스트_백준_1495

-문제- -문제 접근- 이 문제는 각 곡마다 볼륨을 바꿀 수 있는 두 가지 선택(더하거나 빼기)을 이용하여, N개의 곡을 순서대로 연주할 때 마지막에 도달할 수 있는 볼륨 중 최댓값을 구하는 문제입니다. (단, 항상 볼륨은 0 이상 M 이하) 입력:N: 연주할 곡의 개수S: 시작 볼륨M: 최대 볼륨V[1…N]: 각 곡 전에 조절할 수 있는 볼륨 차이규칙:i번째 곡을 연주하기 전, 현재 볼륨 PPP가 있다면 두 가지 선택이 있음:볼륨을 P + V [i] 로 변경볼륨을 P − V [i] 로 변경단, 변경된 볼륨은 반드시 0 이상 M 이하여야 함출력:모든 곡을 순서대로 연주한 후, 가능한 볼륨들 중 최댓값만약 어떤 선택을 해도 중간에 범위를 벗어나서 연주할 수 없는 경우가 있다면, -1 출력DP정의:dp[j]..

IT/Algorithm 2025.02.24

01타일_DP_백준_1904

-문제-  -문제 접근- 문제를 보면 지원이는 동주라는 빌런으로 인하여 00타일과 1 타일만을 사용하여 전체 길이가 N이 되는 2진 수열을 만들어야됩니다. 2진 수열을 만드는 경우의 수를 구하고 그 값을 15476으로 나눈 나머지를 출력해야 합니다. 1. 타일로 수열을 생각하기    1-1. 수열의 길이        "1"타일은 길이가 1이고 "00"타일은 길이가 2이며 길이가 N인 수열을 만들기 위해서는 두 개의 타일을 적절히        배치하여 길이의 합이 N이 되어야 합니다.    1-2. 경우의 수 도출          수열의 시작점이 "1"타일일 경우와 "00"타일일 경우가 존재하며            "1타일" = 남은 길이 N-1           "00"타일 = 남은 길이 N-2     ..

IT/Algorithm 2025.02.23

동전 1_DP_백준_2293

-문제-  -문제 접근-n가지 종류의 동전(무한히 사용 가능)을 사용하여, 합이 k원이 되는 경우의 수를 구해야 됩니다. 조건:각 동전은 원하는 만큼 사용 가능.순서만 다르면 같은 경우로 취급.(조합으로 계산을 해야 함) 접근:k원 이라는 목표 금액을 만드는 경우의 수를 점진적으로 구하는 방식으로 접근해야하며 점화식을 구성해야 합니다. dp[j]: 금액 j원을 만들 수 있는 경우의 수  dp[0] =1 : 0원을 만드는 경우로는 아무 동전도 사용하지 않는 한 가지 경우가 있으므로 1로 초기화 해줍니다. 점화식:dp[j] += dp[j-c] (단 j>=c)현재 동전 c를 사용하기 전에 j-c원을 만드는 모든 경우에 동전 c를 추가하면 j원이 된다를 의미합니다. 한마디로 이 식은 동전 c를 추가하기 전, j..

IT/Algorithm 2025.02.23

DP_1로 만들기_백준_1463

-문제- -문제접근- 위 문제는 주어진 자연수 n을 1로 만들기 위해 필요한 최소 연산 횟수를 DP를 이용해 구하는 문제입니다. 아래의 조건이 중요하며 확실하게 인지를 해야 합니다. n에서 1을 빼는 연산n이 2로 나누어 떨어지면 2로 나누는 연산n이 3으로 나누어 떨어지면 3으로 나누는 연산 d[1] =0 : 1은 이미 목표 값이기에 1을 1로 만드는데 필요한 연산 횟수는 0입니다. 1은 0번의 횟수를 갖기에 for문은 i를 2부터 n보다 작거나 같을 때로 잡아서 위의 조건을 적용시켜줍니다. 1번 조건d[i] = d[i - 1] + 1; : 가장 기본적인 연산인 1을 빼는 것이며 i를 1로 만들기 위한 연산 횟수는 i-1을 1로 만드는 최소 횟수에 1을 더한 값입니다. 2번 조건if (i % 2 == ..

IT/Algorithm 2025.02.20