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 |