https://www.acmicpc.net/problem/1495
1495번: 기타리스트
첫째 줄에 N, S, M이 주어진다. (1 ≤ N ≤ 50, 1 ≤ M ≤ 1,000, 0 ≤ S ≤ M) 둘째 줄에는 각 곡이 시작하기 전에 줄 수 있는 볼륨의 차이가 주어진다. 이 값은 1보다 크거나 같고, M보다 작거나 같다.
www.acmicpc.net
Java 코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int s = sc.nextInt();
int m = sc.nextInt();
int[] arr = new int[n + 1];
int[][] dp = new int[n + 1][m + 1];
for(int i = 1; i <= n; i++) arr[i] = sc.nextInt();
if(s + arr[1] <= m) dp[1][s + arr[1]] = 1;
if(s - arr[1] >= 0) dp[1][s - arr[1]] = 1;
for(int i = 2; i <= n; i++) {
for(int j = 0; j <= m; j++) {
if(dp[i - 1][j] == 1) {
if(j + arr[i] <= m) dp[i][j + arr[i]] = 1;
if(j - arr[i] >= 0) dp[i][j - arr[i]] = 1;
}
}
}
for(int i = m; i >= 0; i--) {
if(dp[n][i] == 1) {
System.out.println(i);
return;
}
}
System.out.println(-1);
}
}
'백준' 카테고리의 다른 글
백준 2303 숫자 게임(Java) (1) | 2023.02.21 |
---|---|
백준 4659 비밀번호 발음하기(Java) (0) | 2023.02.20 |
백준 1743 음식물 피하기(Java) (0) | 2023.02.20 |
백준 16194 카드 구매하기(Java) (0) | 2023.02.20 |
백준 15688 수 정렬하기 5(Java) (0) | 2023.02.20 |