Dp 구현을 했더니 메모리 초과가 뜸 -> 귀찮아서 그냥 케이스 분류로 풂.

 

#include <iostream>
#include <algorithm>
using namespace std;
typedef long long int INT;

INT n,ans;

int main()
{
    cin >> n;

    INT a = (n%5)%3==0?n/5+(n%5)/3:987654321;
    if(a==987654321)
    {
        INT i = n;
        INT d = 5;
        INT chk = 987654321;
        while(i-5>0)
        {
            i-=5;
            
            if(i%3 == 0)
            {
                chk = min(chk,(n-i)/5+i/3);
            }
        }
        if(chk!=987654321)  a = chk;
    }
    INT b = n%5==0?n/5:987654321;
    INT c = n%3==0?n/3:987654321;
    ans = min({a,b,c});
    INT p = ans!=987654321?ans:-1;

    cout << p;

    return 0;
}

 

정석대로 풀어봐야겠다..

'코딩 일지 > baekjoon' 카테고리의 다른 글

1655 가운데를 말해요  (0) 2023.08.22
12865 - 평범한 배낭  (0) 2023.08.17
1463 - 1로 만들기  (0) 2023.02.11
4676 셀프넘버  (0) 2023.02.11
1010-다리놓기(dp를 활용한 combination 구현)  (0) 2023.01.24

+ Recent posts