티스토리 뷰
1463번: 1로 만들기
첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다.
www.acmicpc.net
n=1일 때 d[1]은 1이 아니라 0이다. 1->1은 변환이 일어나지 않는다. DP로 풀 때는 시작값 신경쓰기.
import java.io.*;
import java.util.*;
// 210323
public class Main_BJ_1463_1로만들기 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine().trim());
int d[] = new int[N+1];
d[1] = 0;
// if(N>=3) d[3] = 1;
// if(N>=2) d[2] = 1;
for(int n=2; n<=N; n++) {
d[n] = d[n-1]+1;
if(n%2==0) d[n] = Math.min(d[n], d[n/2] + 1);
if(n%3==0) d[n] = Math.min(d[n], d[n/3] + 1);
}
System.out.println(d[N]);
br.close();
}
}
'코딩테스트 > 백준' 카테고리의 다른 글
[BJ] 1600. 말이 되고픈 원숭이 (0) | 2021.03.24 |
---|---|
[BJ] 1149. RGB 거리 (0) | 2021.03.23 |
[BJ] 2206. 벽 부수고 이동하기 (0) | 2021.03.17 |
[BJ] 17070.파이프 옮기기1 (0) | 2021.03.06 |
[BJ] 3109. 빵집 (0) | 2021.03.06 |
댓글