https://www.acmicpc.net/problem/1423
1423번: 원숭이 키우기
첫째 줄에 캐릭터의 최대 레벨 N(1 ≤ N ≤ 50)이 주어진다. 둘째 줄에는 해빈이가 가지고 있는 캐릭터의 수가 각 레벨 별로 주어진다. 셋째 줄에는 캐릭터의 힘이 각 레벨 별로 주어진다. 각 레벨
www.acmicpc.net
문제
코드
import java.io.*;
import java.util.*;
public class Main {
private static final BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
private static final BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
public static void main(String[] args) throws IOException {
int n = Integer.parseInt(bf.readLine());
int[] level_num = new int[n + 1];
int[] strength = new int[n + 1];
StringTokenizer st = new StringTokenizer(bf.readLine());
for(int i = 1 ; i <= n ; i++) {
level_num[i] = Integer.parseInt(st.nextToken());
}
st = new StringTokenizer(bf.readLine());
for(int i = 1 ; i <= n ; i++) {
strength[i] = Integer.parseInt(st.nextToken());
}
int d = Integer.parseInt(bf.readLine());
long initial = 0;
for(int i = 1 ; i <= n ; i++) {
initial += (long) level_num[i] * strength[i];
level_num[i] = Math.min(d, level_num[i]);
}
long[] dp = new long[d + 1];
for(int i = 1 ; i <= n ; i++) {
while(level_num[i] > 0) {
for(int j = d ; j >= 0 ; j--) {
for(int k = i + 1 ; k <= n && k + j - i <= d ; k++) {
dp[k + j - i] = Math.max(dp[k + j - i], dp[j] + strength[k] - strength[i]);
}
}
level_num[i]--;
}
}
bw.write((initial + dp[d]) + "\n");
bf.close();
bw.flush();
bw.close();
}
}
Search
후기
이런 날씨에 코테를 하자니 수증기가 될 뻔했습니다. 실제로 수증기가 됐다가 기적적으로 응고되어 돌아올 수 있었습니다 ;; (더워서 헛소리 중)
더위 조심하세요 다들..
'코딩테스트' 카테고리의 다른 글
[백준] 5972번 '택배 배송' - Java (0) | 2023.08.09 |
---|---|
[백준] 1516번 '게임 개발' - Java (0) | 2023.08.08 |
[백준] 1976번 '여행 가자' - Java (0) | 2023.08.06 |
[백준] 1647번 '도시 분할 계획' - Java (1) | 2023.08.05 |
[백준] 1424번 '새 앨범' - Java (1) | 2023.08.04 |