[백준] 설탕 배달

bin1225·2022년 11월 25일
0

c++ 알고리즘

목록 보기
27/35

#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문제인지 모르겠다.
오늘은 시간적 여유가 별로 없어서 조금 난이도가 낮은 문제를 풀었다.

0개의 댓글