문제
https://www.acmicpc.net/problem/1463
1463번: 1로 만들기
첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다.
www.acmicpc.net
풀이
바텀-업 방식(동적 계획법 구현 방식)으로 구현 : 점화식을 이용해 DP 테이블을 채운다.
- count[i] : i에서 1로 만드는 데 걸리는 최소 연산 횟수
동적 계획법(Dynamic Programming) 알고리즘
동적 계획법(Dynamic Programming) 알고리즘
동적 계획법(Dynamic Programming) 알고리즘 복잡한 문제를 여러 개의 간단한 문제로 분리하여 부분의 문제들을 해결함으로써 최종적으로 복잡한 문제의 답을 구하는 방법 동적 계획법 알고리즘 핵심
soobin0821.tistory.com
코드
#include <iostream>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int N;
cin >> N;
int count[N + 1];
count[0] = 0;
for(int i = 1; i <= N; i++)
{
count[i] = i - 1;
if(i % 3 == 0)
{
count[i] = min(count[i], count[i / 3] + 1); // 나누기 3 연산
}
if(i % 2 == 0)
{
count[i] = min(count[i], count[i / 2] + 1); // 나누기 2 연산
}
count[i] = min(count[i], count[i - 1] + 1); // -1 연산 표현
}
cout << count[N];
}
728x90
'코딩테스트 > 백준' 카테고리의 다른 글
[백준][C++]1744번 수 묶기 (2) | 2023.06.09 |
---|---|
[백준][C++]1541번 잃어버린 괄호 (0) | 2023.06.09 |
[백준][C++]1325번 효율적인 해킹 (0) | 2023.06.08 |
[백준][C++]1717번 집합의 표현 (0) | 2023.06.07 |
[백준][C++]1260번 DFS와 BFS (0) | 2023.06.07 |