#include<stdio.h>
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
int num = n/5;
int answer = 0;
int tmp = 0;
for(int i=num; i>=0; i--){
if((n-i*5)%3 == 0){
answer = i+ (n-i*5)/3;
tmp = 1;
break;
}
}
if(tmp ==0){
cout<<-1;
}
else cout<<answer;
}
주어진 숫자 n을 3, 5의 합으로 표현하는데, 수를 최대한 적게 사용하는 문제였다. 처음에 다이나믹 프로그래밍이기 때문에 저장공간을 따로 사용할 거라 생각하고 고민했는데, 조금 더 생각해보니 그냥 반복문을 이용해서 3을 최대한 적게 사용하면 되겠다고 생각하여 코드를 작성했다.
아직 다이나믹 프로그래밍의 의미를 잘 모르는 건지 이 문제가 왜 DF문제인지 모르겠다.
오늘은 시간적 여유가 별로 없어서 조금 난이도가 낮은 문제를 풀었다.