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
- 모캠
- React
- React.js
- 쿠버네티스
- #Swagger-codegen
- AWS
- Redux
- #Swagger-ui
- server
- #스웨거
- ecs
- 프로세스
- javascript
- Site Reliability engineering
- #Swagger-editor
- Reducer
- 프로세스 통신
- IP
- 카카오게임즈
- Kubernetes
- #Swagger
- docker
- #api 문서화
- fluentd
- SRE
- 쿠버네티스 컨트롤러
- 북딜
- 기술PM
- 모두의캠퍼스
- action
반응형
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