Coding Test/백준

[C++/Python] 백준 1463 - 1로 만들기

Junchoi 2020. 7. 20. 14:00

문제 링크

https://www.acmicpc.net/problem/1463

 

1463번: 1로 만들기

첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다.

www.acmicpc.net

 

1부터 입력으로 받은 n까지 bottom-up 방식으로 3가지 연산방식의 최솟값을 구해나가야 합니다.

 

먼저 n이 1인 경우 연산을 할 필요가 없으므로 0 입니다. d[1] = 0

1. n에서 1을 빼는 경우는 n-1의 최솟값에서 한 번의 연산 횟수(1을 뺀다)가 추가됩니다. 

2. n이 2로 나누어 떨어지면 n / 2의 최솟값에서 한 번의 연산 횟수(2로 나눈다)가 추가됩니다. 

3. n이 3으로 나누어 떨어지면 n / 3의 최솟값에서 한 번의 연산 횟수(3으로 나눈다)가 추가됩니다. 

 

위 3가지 중 최솟값이 정답이 됩니다.

 

 

구현 코드