[백준 11058] 크리보드 (JAVA)
문제
풀이
DP를 이용한 문제입니다. 전체 선택 -> 복사 -> 붙여넣기는 3번의 동작이 필요합니다. 붙여넣기 이후에는 계속 붙여넣기를 할 수 있으므로 전부 확인해줘야 합니다. (테스트해본 결과 3번 붙여넣기 안에서 최댓값이 나오는 거 같습니다)
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 9 | 12 |
7번 버튼을 눌렀을 때 붙여넣기는 3번의 동작이 필요하므로 4번의 A갯수의 2배이므로 8입니다. 그러나 3번에서 붙여넣기를 두 번 하면 9가 되고 2번에서 붙여넣기를 세 번 하면 8이 되므로 가장 큰 수는 9입니다.
코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
long[] dp = new long[N+1];
for (int i = 1; i <= Math.min(N, 6); i++) {
dp[i] = i;
}
for (int i = 7; i <= N; i++) {
for (int j = 2; j <= 5; j++) {
dp[i] = Math.max(dp[i-(j+1)] * j, dp[i]);
}
}
System.out.println(dp[N]);
br.close();
}
}
Author And Source
이 문제에 관하여([백준 11058] 크리보드 (JAVA)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@solser12/백준-11058-크리보드-JAVA저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)