[백준] Silver I. 1로 만들기 2

2024. 6. 15. 16:35·Algorithm/백준

https://www.acmicpc.net/problem/12852

 

사용 알고리즘
  • 다이나믹 프로그래밍

 

풀이

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    static int n;
    static int [] d = new int [1000002];
    static int[] path = new int[1000002];
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        n = Integer.parseInt(br.readLine());

        d[1] = 0;
        for(int i = 2; i <= n; i++) {
            d[i] = d[i-1] + 1;
            path[i] = i-1;

            if (i % 2 == 0 && d[i] > d[i/2] + 1) { // d[i-1]과 d[i/2]비교해서 d[i/2]가 더 작다면 최솟값을 할당
                d[i] = d[i/2] + 1;
                path[i] = i/2;
            }

            if (i % 3 == 0 && d[i] > d[i/3] + 1) {
                d[i] = d[i / 3] + 1;
                path[i] = i/3;
            }
        }

        System.out.println(d[n]);

        int cur = n;
        while(true) {
            System.out.print(cur + " ");
            if (cur == 1) break;
            cur = path[cur];
        }
        System.out.println();
    }
}

 

 

풀이

 

 

출처: https://141227.tistory.com/333

 

trace는 경로 값, 즉 그 전의 값을 저장하는 배열이다.

 

trace[2] = 1의 의미는 2에서 1로 가는게 최적이라는 의미다. 

 

d[10] 도달할 때의 최솟값을 살펴 보면,

d[9] + 1, dp[5] + 1 둘중에 하나여야 하는데 dp[9] + 1이 더 작으니 경로는 9가 된다.

 

dp[9]에서도 dp[8] + 1, dp[3] + 1을 계산하면 dp[3] + 1이 더 작으니 경로는 3이 된다.

 

'Algorithm > 백준' 카테고리의 다른 글

[백준] Silver II. 가장 긴 증가하는 부분 수열  (0) 2024.06.17
[백준] Silver I. 쉬운 계단 수  (2) 2024.06.15
[백준] Silver I. RGB 거리  (0) 2024.06.14
[백준] Gold V. 암호만들기  (0) 2024.06.10
[백준] Silver 1. 봄버맨  (0) 2024.06.10
'Algorithm/백준' 카테고리의 다른 글
  • [백준] Silver II. 가장 긴 증가하는 부분 수열
  • [백준] Silver I. 쉬운 계단 수
  • [백준] Silver I. RGB 거리
  • [백준] Gold V. 암호만들기
미네구스
미네구스
  • 미네구스
    망구스 blog
    미네구스
  • 전체
    오늘
    어제
    • 분류 전체보기 (175)
      • Kotlin (0)
      • 시큐리티 (0)
        • 개발자 유미 (0)
      • 배포 (4)
      • 회고 (0)
      • Algorithm (143)
        • 프로그래머스 코딩테스트 문제풀이전략 (37)
        • 백준 (66)
        • 프로그래머스 (18)
        • Leetcode (22)
        • 코테 팁 (0)
      • 프로젝트 (8)
        • WEPIK (3)
        • PICK-O (5)
      • CS (1)
        • 운영체제 (5)
        • 네트워크 (1)
        • 면접스터디 (2)
      • 면접 (1)
        • 코테후기 (0)
        • 면접후기 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    백트래킹
    `
    N과 M
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
미네구스
[백준] Silver I. 1로 만들기 2
상단으로

티스토리툴바