티스토리 뷰

Algorithm

백준_1로 만들기_1463

Young_J 2020. 10. 7. 08:54

//알고리즘

1. 동적프로그래밍(dp)

2. 1부터 주어진값까지 dp테이블을 만들어 계산함.

3. 3으로 나누어떨어질 때, 2로 나누어떨어질 때, 아니면 1을 빼는데 이 순서대로 하면 답이 안나올 수도 있음.

 -> 역순으로 시작해야 최소연산의 횟수를 구할 수 있음.(아이디어가 필요한 문제인듯)

 

import java.util.Scanner;

public class 백준_1로만들기_1463 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();

		int[] ans = new int[N+3];

		ans[1] = 0;
		ans[2] = 1;
		ans[3] = 1;

		for (int i = 4; i <= N; i++) {
			ans[i] = 1 + ans[i - 1];
			if (i % 2 == 0) {
				if (ans[i] > ans[2] + ans[i / 2]) {
					ans[i] = ans[2] + ans[i / 2];
				}
			}
			if (i % 3 == 0) {
				if (ans[i] > ans[3] + ans[i / 3]) {
					ans[i] = ans[3] + ans[i / 3];
				}
			}

		}

		System.out.println(ans[N]);
	}

}

'Algorithm' 카테고리의 다른 글

백준_빙고_2578  (0) 2020.10.09
백준_블랙잭_2798  (0) 2020.10.08
백준_수 이어가기_2635  (0) 2020.10.06
백준_일곱난쟁이_2309  (0) 2020.10.05
백준_백도어_9205  (0) 2020.10.04
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG more
«   2025/02   »
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
글 보관함