cpp) 백준 1463: 1로 만들기
본문 바로가기
코딩 테스트/백준 (C++, Python)

cpp) 백준 1463: 1로 만들기

by NEWSUN* 2023. 7. 15.

Problem

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

 

1463번: 1로 만들기

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

www.acmicpc.net

 

 

Solution

#include<iostream>
#include<algorithm>

using namespace std;

int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);

    int n;
    cin >> n;
    int dp[10000001];

    dp[0]=0;
    dp[1]=0;
    dp[2]=1;
    dp[3]=1;

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

    cout << dp[n] << '\n';
  
    return 0;
}

 

DP는 bottom-up 방식으로 기본적인 값들은 미리 구해놓고 순차적으로 계산하는 풀이 방법이다. 우선, 기본적인 값으로 dp[0], dp[1], dp[2], dp[3]을 구해놓는다.  

 

 

 

Reference

https://velog.io/@matcha_/BOJ-%EB%B0%B1%EC%A4%80-1463-CDP

 

[백준] 1463 1로 만들기 C++(DP)

백준 1463

velog.io

 

'코딩 테스트 > 백준 (C++, Python)' 카테고리의 다른 글

cpp) 백준 9095: 1, 2, 3 더하기  (1) 2023.07.21
cpp) 백준 1966: 프린터 큐  (0) 2023.07.17
cpp) 백준 11399: ATM  (0) 2023.07.12
cpp) 백준 18258: 큐 2  (0) 2023.07.12
cpp) 백준 10773: 제로  (0) 2023.07.08