File tree Expand file tree Collapse file tree 2 files changed +63
-0
lines changed
Expand file tree Collapse file tree 2 files changed +63
-0
lines changed Original file line number Diff line number Diff line change 1+ "use strict" ;
2+
3+ const fs = require ( "fs" ) ;
4+
5+ const input = fs
6+ . readFileSync ( process . platform === "linux" ? "/dev/stdin" : "./input.txt" )
7+ . toString ( )
8+ . trim ( )
9+ . split ( "\n" ) ;
10+
11+ const n = + input [ 0 ] ;
12+
13+ const dp = new Array ( n + 1 ) . fill ( 0 ) ;
14+
15+ for ( let i = 2 ; i <= n ; i ++ ) {
16+ dp [ i ] = dp [ i - 1 ] + 1 ;
17+
18+ if ( i % 2 === 0 ) {
19+ dp [ i ] = Math . min ( dp [ i ] , dp [ i / 2 ] + 1 ) ;
20+ }
21+
22+ if ( i % 3 === 0 ) {
23+ dp [ i ] = Math . min ( dp [ i ] , dp [ i / 3 ] + 1 ) ;
24+ }
25+ }
26+
27+ console . log ( dp [ n ] ) ;
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+ 메모리: 17444 KB, 시간: 160 ms
8+
9+ ### 분류
10+
11+ 다이나믹 프로그래밍
12+
13+ ### 제출 일자
14+
15+ 2026년 3월 1일 15:06:30
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