acmicpc
[BAEKJOON] 1463. 1로 만들기
코드와이
2021. 2. 17. 13:40
문제링크
1463번: 1로 만들기
첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다.
www.acmicpc.net
package acmicpc.Silver3;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class ㅁ1로_만들기 {
static int ans;
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
ans = Integer.MAX_VALUE;
func(n, 0);
System.out.println(ans);
}
public static void func(int n, int cnt) {
if (n == 1) {
ans = Math.min(ans, cnt);
return;
}
if (cnt >= ans) return;
int tmp;
if( n % 3 == 0) {
tmp = n / 3;
func(tmp, cnt + 1);
}
if (n % 2 == 0) {
tmp = n / 2;
func(tmp, cnt + 1);
}
if (n > 1){
tmp = n - 1;
func(tmp, cnt + 1);
}
}
}