hyunjin

[C++][그리디 - 설탕배달(2839)] 2차 풀이 본문

알고리즘 연습/백준

[C++][그리디 - 설탕배달(2839)] 2차 풀이

_h.j 2020. 9. 4. 17:50
728x90

백준/그리디/설탕배달(2839) 바로가기

 

 

[첫 번째 풀이] C

옛날에 풀었었다. 바로가기

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
	int sugar;
	int count = 0, temp, flag=0;
	scanf("%d", &sugar);
	temp = sugar;
	while ((temp % 5) != 0) {
		temp -= 3;
		if (temp < 0) {
			flag = -1;
			break;
		}
		count++;
	}
	if (flag == -1)
		count = -1;
	else 
		count += temp / 5;
	printf("%d", count);
	return 0;
}

 

[두 번째 풀이] C++

#include <bits/stdc++.h>

using namespace std;
int main(){
	int N,res=0;
	cin>>N;	
	while(N>0){
		if(N%5==0){
			res += N/5;/
			break;
		}
		else{
			N-=3;
			res++; 
		}
	} 
	if(N<0) res = -1;	
	cout<<res;	
	return 0;
}

 

[풀이 방법]

경우의 수를 나눠본다.

1. 5 배수
2. 3,5섞임
3. 3으로만 가능

4. 3,5로 표현 불가

 

더 시간이 짧게 걸리는 풀이가 있을까??

N에서 부터 시작해서(그니까 0부터 모든 경우를 다 살펴봐야하니까) 

이 부분을 좀 줄일 수  없을까?? 

 

 

[다른 사람 풀이]

5kg로 나눈 다음 1개씩 줄이면서 나머지가 3으로 나누어 떨어지는 지 확인하는 방법 

뭐 수행시간 비슷하긴 하겠다...

내 풀이는 짧으니까 그걸로 만족

 

 

참고

다른 사람 풀이 바로가기

 

 

 

 

728x90