목록PS/Dynamic Programming (3)
개발 공부 기록
Question https://www.acmicpc.net/problem/11660 11660번: 구간 합 구하기 5 첫째 줄에 표의 크기 N과 합을 구해야 하는 횟수 M이 주어진다. (1 ≤ N ≤ 1024, 1 ≤ M ≤ 100,000) 둘째 줄부터 N개의 줄에는 표에 채워져 있는 수가 1행부터 차례대로 주어진다. 다음 M개의 줄에는 네 www.acmicpc.net 💡 Solution DP를 이용하여 해결합니다. 자신이 위치하는 행의 맨 앞 값부터 자신까지를 더하는 누적합을 구하고, 이를 이용하여 문제를 해결합니다. 💻 Code import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; impo..
Question https://www.acmicpc.net/problem/21758 21758번: 꿀 따기 첫 번째 줄에 가능한 최대의 꿀의 양을 출력한다. www.acmicpc.net 💡 Solution 다음과 같은 3가지 경우가 있습니다. 1. 벌통이 왼쪽 끝에 존재할 경우 : 이 경우에는 벌1은 반드시 오른쪽 끝에 존재해야 합니다. 벌은 반드시 벌통 쪽으로 이동해야하는데, 최대한 한 장소라도 더 거쳐서 꿀을 더 따야하기 때문입니다. 벌1의 위치는 정해졌으니, 벌2의 위치만 탐색하면 됩니다. 2. 벌통이 오른쪽 끝에 존재할 경우 : 1번과 반대로 벌1은 반드시 왼쪽 끝에 존재해야 합니다. 동일하게 벌2의 위치만 탐색하면 됩니다. 3. 벌통이 가운데에 있을 경우 : 이 경우에 벌1과 벌2는 반드시 양쪽..
https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net Question 정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지이다. X가 3으로 나누어 떨어지면, 3으로 나눈다. X가 2로 나누어 떨어지면, 2로 나눈다. 1을 뺀다. 정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오. Input 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. Output 첫째 줄에 연산을 하는 횟수의 최솟값을 출력한다. 💡 Solution 우리는 연산 횟수를 최소화하면서 1..