Recent Posts
Recent Comments
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
Tags
- server
- 프로세스
- 쿠버네티스 컨트롤러
- ecs
- 기술PM
- 카카오게임즈
- Reducer
- IP
- 쿠버네티스
- React.js
- SRE
- 북딜
- #Swagger-ui
- 프로세스 통신
- #Swagger
- fluentd
- #스웨거
- action
- AWS
- React
- 모두의캠퍼스
- 모캠
- Redux
- javascript
- #Swagger-editor
- Site Reliability engineering
- #api 문서화
- Kubernetes
- docker
- #Swagger-codegen
반응형
Archives
- Today
- Total
탕구리's 블로그
백준 알고리즘 1463번 동적계획법 기초 본문
반응형
동적계획법(Dynamic Programming) 기초
이 문제도 Top-Down 방식을 통해 해결 하였는데... 내가 생각한 Top-Down이 이게 맞는지 모르겠다.
입력 받은 N을 기준으로
각각, 3으로 나누기, 2로 나누기, 1을 빼기
세 가지 방법을 시작으로 연산을 시작한다. 하나만 하는 것이 아니고
(3가지 방법을 모두 진행해 보고 그 중 최소값을 배열에 담아 두는 방식)
예를 들면 3을 1로 만드는 연산 방법은
3 / 3 = 1 의 방법과
(3 -1) / 2 의 방법이 있기 때문에
그 중 연산횟수가 최소가 되는 첫 번째 방법의 연산 횟수가 구하고자 하는 출력 값이 된다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class num_1463
{
static public void main(String args[]) throws IOException
{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(in.readLine());
int[] dp = new int[T+1];
System.out.print(resolve(T,dp));
}
static int resolve(int n,int[] dp)
{
if( n == 1) return 0;
if (dp[n] > 0)
{
return dp[n];
}
dp[n] = resolve(n-1,dp)+1;
if(n%3 == 0)
{
Math.min(dp[n],resolve(n/3,dp)+1);
}
if(n%2 == 0)
{
Math.min(dp[n],resolve(n/2,dp)+1);
}
return dp[n];
}
}
반응형
'Algorithm' 카테고리의 다른 글
| 백준 알고리즘 11053번 가장 긴 증가하는 부분 수열 (0) | 2017.07.26 |
|---|---|
| 백준 알고리즘 1520번 내리막길 (0) | 2017.07.26 |
| 백준 알고리즘 9465번 스티커 (0) | 2017.07.23 |
| 백준 알고리즘 1149번 동적계획법 기초 (0) | 2017.07.20 |
| 백준 알고리즘 10844번 동적계획법 기초 (0) | 2017.07.20 |
Comments