728x90
반응형
풀이 문제 : 백준 1463번 : 1로 만들기
풀이 언어 : C++
알고리즘 : DP
문제링크 : https://www.acmicpc.net/problem/1463
1463번: 1로 만들기
첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다.
www.acmicpc.net
문제 요약
접근 방식
가능한 연산이 세가지 뿐이니까 세가지 연산을 모두 해보고 횟수가 가장 적은 것을 누적하며 구하고자 하는 값까지 찾아올라가는 방식으로, dp 알고리즘을 사용했다.
코드
#include <iostream>
#include <algorithm>
using namespace std;
int dp[1000000];
int main() {
dp[1] = 0;
dp[2] = 1;
dp[3] = 1;
int n;
cin >> n;
for (int i = 4; i <= n; i++) {
int m = dp[i - 1] + 1;
if ((i % 2) == 0) m = min(m, dp[i / 2] + 1);
if ((i % 3) == 0) m = min(m, dp[i / 3] + 1);
dp[i] = m;
}
cout << dp[n];
return 0;
}
728x90
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 10815번: 숫자 카드 / C++ / 이분탐색 (0) | 2022.09.20 |
---|---|
[백준] 1920번: 수 찾기 / C++ / 이분탐색 (0) | 2022.09.19 |
[백준] 2724번: 기찍 N - 시간초과 / C++ (0) | 2022.05.01 |
[백준] 9095번: 1,2,3 더하기 / C++ (0) | 2022.04.14 |
[백준] 2503번: 숫자 야구 / Python (0) | 2021.12.23 |