[백준] 1463번: 1로 만들기

2021. 2. 11. 01:33Algorithm/백준

 

1463번: 1로 만들기

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

www.acmicpc.net

 

1을 뺐을때 연산의 갯수, 2로 나눠질때의 연산의 갯수, 3으로 나눠질때의 연산의 갯수 중 최소값을 배열에 저장한다.

#include<iostream>
#include<algorithm>
#define MAX 1000001
using namespace std;

int main() {
	int n;
	int num[MAX];

	cin >> n;

	num[1] = 0;
	for (int i = 2;i <= n;i++) {
		num[i] = num[i - 1] + 1;
		if (i % 2 == 0) num[i] = min(num[i], num[i / 2] + 1);
		if (i % 3 == 0) num[i] = min(num[i], num[i / 3] + 1);
	}

	cout << num[n];
}

'Algorithm > 백준' 카테고리의 다른 글

[백준] 1149번: RGB거리  (0) 2021.02.11
[백준] 2579번: 계단오르기  (0) 2021.02.11
[백준] 1781번: 컵라면  (0) 2021.02.10
[백준] 1202번: 보석 도둑  (0) 2021.02.10
[백준] 2217번 : 로프  (0) 2021.02.10