Compy's Blog
151 words
1 minutes
[BOJ] 육각수
2025-06-15

육각수

TimeLimitMemoryLimitConditionTAG
2s128MB(1 ≤ N ≤ 1’000’000Dynamic Programming

그냥 전형적인 dp 문제인데, 단순한 연산이여서 1초를 10억으로 보고서 처리하면 간단히 풀 수 있는 문제

정답 코드

#include <iostream>
#include <queue>
#include <set>
#include <algorithm>
#include <random>

#define mod 1000000007LL
#define MAX 1'000'000LL
using namespace std;
using ll = long long;

ll n;

ll dp[MAX+1];
vector<ll> nums;


int main(){
    cin >> n;
    
    
    dp[0] = 0;
    dp[1] = 1;
    nums.push_back(1);
    for(int i = 2; i <= n; i++){
        if(i == (nums.size() + 1) * 2 + nums.size()*2 - 1 + nums.back()) {
            nums.push_back(i);
            dp[i] = 1;
        }
        else{
            dp[i] = i;
            for(ll num : nums) dp[i] = min(dp[i], dp[i - num] + 1);
        }
    }
    

    cout << dp[n];
    return 0;
}
[BOJ] 육각수
https://compy07.github.io/Blog/posts/boj/1229/
Author
뒹굴뒹굴 이정훈 공부방
Published at
2025-06-15