문제https://www.acmicpc.net/problem/2011전략5000자리이기때문에 완전탐색은 불가능입력값이 크기 때문에 dp로 생각해보면 앞에서 부터 끊어서 확인해보ex) 25114의 경우 - B,Y,A,K,A,D,N 의 알파벳들이 끊었을 때 나올 수 있다.-> 2/5/1/1/4 , 25/1/1/4, 25/11/4, 25/1/14, 2/5/11/4, 2/5/1/14dp[i] = i자리 영어의 암호화 가짓수로 두기맨 마지막 숫자를 확인 했을 때, 아래와 같이 확인할 수 있다.새로 붙인 숫자가 1~9를 앞에 수와 별도로 칠때 d[i-1]의 가짓수를 가진다.,앞에 숫자와 포함해 10 ~ 26 ->이 경우 앞에 숫자와 포함하기 때문에 가짓수는 d[i-2]코드import java.io.BufferedR..
문제https://www.acmicpc.net/problem/2133전략N = 2 -> 3 N = 4 -> 11 N = 6 -> 41 N이 홀수일 때는 0 N+2가 될수록 dp[i-2]와는 별도로 양끝을 세로막대로 채우고 가운대를 가로로 다 채운 형태의 2가지 경우가 추가된다. 1001 00001001 10010000 1001즉, N+2가 될때마다 i-2와 앞선 가운대를 다 채운 별도의 경우 수 그리고 i자체가 가운대를 채운 수를 고려해야 한다.정리하면, dp[i] = dp[i-2] * 3 + dp[4부터(i-2)까지 경우의 수] * 2의 합 + 2;코드import java.io.BufferedReader;import java.io.IOException;import java.io.Input..
문제https://www.acmicpc.net/problem/9084전략동전으로 가능한 금액의 가짓수를 구하기 때문에 처음에 떠올린것은 완전탐색, 그리디 , DP이 중 테스트 케이스가 10 , 동전의 가짓수가 20 , 금액은 10000이다.완전탐색 : 동전의 종류별로 조합을 통해 금액 확인 ⇒ 시간복잡도가 20! * 10으로 너무 크다그리디 : 값이 큰 동전을 먼저 사용하는 방식은 최적해를 보장하지 않는다.시간복잡도까지 고려해서 DP로 접근하는것이 맞다고 생각해 고민하였다.dp배열을 금액에 따른 가짓수로 두었을때 2중 for문으로 동전별로 가능한 금액의 가짓수를 세는것dp[j] += dp[j - coin] (단, j - coin >= 0일 때)하지만 dp배열이 1차원일 경우 5+7과 7+5처럼 중복으로 ..