Skip to content

Commit 2df9080

Browse files
committed
[Silver III] Title: 1로 만들기, Time: 160 ms, Memory: 17444 KB -BaekjoonHub
1 parent 5182200 commit 2df9080

File tree

2 files changed

+63
-0
lines changed

2 files changed

+63
-0
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
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]);
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
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+

0 commit comments

Comments
 (0)