File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ import java .io .BufferedReader ;
2+ import java .io .IOException ;
3+ import java .io .InputStreamReader ;
4+ import java .util .*;
5+
6+ public class Main {
7+
8+ public static void main (String [] args ) throws IOException {
9+ BufferedReader br = new BufferedReader (new InputStreamReader (System .in ));
10+ int n = Integer .parseInt (br .readLine ());
11+ int [] dp = new int [n + 1 ];
12+ for (int i = n - 1 ; i > 0 ; i --) {
13+ if (i * 2 <= n ) {
14+ if (i * 3 <= n ) {
15+ dp [i ] = Math .min (dp [i + 1 ] + 1 , dp [i * 2 ] + 1 );
16+ dp [i ] = Math .min (dp [i ], dp [i * 3 ] + 1 );
17+ } else {
18+ dp [i ] = Math .min (dp [i + 1 ] + 1 , dp [i * 2 ] + 1 );
19+ }
20+ } else {
21+ dp [i ] = dp [i + 1 ] + 1 ;
22+ }
23+ }
24+
25+ System .out .println (dp [1 ]);
26+
27+ }
28+ }
Original file line number Diff line number Diff line change 1+ # [ Silver III] 1로 만들기 - 1463
2+
3+ [ 문제 링크] ( https://www.acmicpc.net/problem/1463 )
4+
5+ ### 성능 요약
6+
7+ 메모리: 18752 KB, 시간: 140 ms
8+
9+ ### 분류
10+
11+ 다이나믹 프로그래밍
12+
13+ ### 제출 일자
14+
15+ 2025년 11월 5일 11:41:51
16+
17+ ### 문제 설명
18+
19+ <p >정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다.</p >
20+
21+ <ol >
22+ <li>X가 3으로 나누어 떨어지면, 3으로 나눈다.</li>
23+ <li>X가 2로 나누어 떨어지면, 2로 나눈다.</li>
24+ <li>1을 뺀다.</li>
25+ </ol >
26+
27+ <p >정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오.</p >
28+
29+ ### 입력
30+
31+ <p >첫째 줄에 1보다 크거나 같고, 10<sup >6</sup >보다 작거나 같은 정수 N이 주어진다.</p >
32+
33+ ### 출력
34+
35+ <p >첫째 줄에 연산을 하는 횟수의 최솟값을 출력한다.</p >
36+
You can’t perform that action at this time.
0 commit comments