[백준] 1463번: 1로 만들기
2021. 2. 11. 01:33ㆍAlgorithm/백준
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 |