알고리즘 연습/백준
[C++][그리디 - 설탕배달(2839)] 2차 풀이
_h.j
2020. 9. 4. 17:50
728x90
[첫 번째 풀이] 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