Q11052. 카드 구매하기
카드 수만큼의 최대값을 저장하며 나아가는 이중포문 로직입니다.
import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Q11052 { static long[][] dp = new long[2][1001]; public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine());
int num = Integer.parseInt(st.nextToken());
st = new StringTokenizer(br.readLine()); for (int i = 1; i <= num; i++) { dp[0][i] = Integer.parseInt(st.nextToken()); }
dp[1][1] = dp[0][1]; for (int i = 2; i <= num; i++) { long maxValue = dp[0][i]; for (int j = 1; j <= i/2; j++) { maxValue = Math.max(maxValue, dp[1][i-j] + dp[1][j]); } dp[1][i] = maxValue; }
System.out.println(dp[1][num]); } } |