1) 사이트
2) 문제
만약 18킬로를 배달가야한다고 하면, 3kg X 6 보다는 5kg X 3, 3kg X 1 총 4개로 가져가는 것이 더 적은 개수의 봉지를 배달할 수 있는 방법이라는 뜻이다.
글쓴이는 처음에 5씩 빼며 3으로 나누어 떨어지는지 확인했지만, 그 반대로 하는 것이 답을 도출하는 지름길이다.
즉, 11이면 11//5부터 시작해 0까지 역순으로 빼며 3으로 나누어 떨어지는 지 확인하는 방법이다 (11 -> 1 (-10) -> 6 (-5))
3) 파이썬 코드
num=0
deliver_mi=0
deliver=int(input())
if deliver%5==0:
num=deliver//5
elif deliver//5>0:
for i in range(deliver//5,-1,-1):
deliver_mi=deliver-(5*i)
if (deliver_mi%3==0):
num=i+deliver_mi//3
break
else:
num=-1
elif deliver%3==0:
num=deliver//3
else:
num=-1
print(num)
3-1) 선수 지식
파이썬 코드를 이해하기 위해 알아야 할 선수 지식이 있습니다.
1. for문 숫자 감소시키는 법
-> for i in range(10,-1,-1) #10,9,8,7....0
3-2) 설명
1. 사용할 변수를 선언 및 초기화 해줍니다.
num=0
deliver_mi=0
num은 결과값을 저장하는 변수이며, deliver_mi는 입력받은 수를 5의 배수로 뺄 때마다 저장하는 변수이다.
2. 배달을 진행할 설탕의 총 kg을 입력 받습니다.
deliver=int(input())
3. 입력 받은 kg이 5로 나누어 떨어진다면 5로 나누어준다.
if deliver%5==0:
num=deliver//5
4-1. 5로 나누어 떨어지진 않지만, 5로 나눌 수 있는 수는 최대 가져갈 수 있는 5kg을 구하고 3kg를 구한다.
elif deliver//5>0:
for i in range(deliver//5,-1,-1):
deliver_mi=deliver-(5*i)
if (deliver_mi%3==0):
num=i+deliver_mi//3
break
5kg가 없을 수도 있기 때문에 0까지 for문을 꼭 돌려야한다.
4-2. 5kg 3kg로 나누어 떨어지지 않는 수는 -1을 저장한다.
elif deliver//5>0:
for i in range(deliver//5,-1,-1):
deliver_mi=deliver-(5*i)
if (deliver_mi%3==0):
num=i+deliver_mi//3
break
else:
num=-1
5. (혹시 몰라 추가한 코드) 3으로 나누어 떨어지는 수는 3으로 나눠준다.
elif deliver%3==0:
num=deliver//3
6. (혹시 몰라 추가한 코드) 나누어 떨어지지 않는 수는 -1을 저장해준다.
else:
num=-1
7. 결과값을 출력한다.
print(num)
4) c언어
#include<stdio.h>
int main() {
int num = 0;
int copy = 0;
int each = 0;
scanf("%d", &num);
copy = num;
int quo_5 = copy/5;
while (copy > 0) {
if ((copy - (quo_5 * 5)) % 3 == 0 && quo_5>=0) {
copy = copy - (quo_5 * 5);
for (int i = 1; i < 1700; i++) {
if (copy > 0) {
copy = copy - 3;
each = i;
}
}
}
else {
if (quo_5 < 0) {
printf("-1");
return 0;
}
else
{
quo_5--;
}
}
}
each = each + quo_5;
printf("%d", each);
return 0;
}
무려 4달 전에 c언어로 미리 풀었던 문제이다 ㅎㅎ...
궁금한 점이나 공유할 정보가 있다면 댓글로 남겨주세요 *^^*
끝!
'알고리즘 > 백준' 카테고리의 다른 글
1011번 Fly me to the Alpha Centauri (0) | 2021.07.14 |
---|---|
10757번 큰 수 A+B (0) | 2021.06.06 |
2775번 부녀회장이 될테야 (0) | 2021.06.06 |
10250번 ACM 호텔 (0) | 2021.06.02 |
2869번 달팽이는 올라가고 싶다 (0) | 2021.05.31 |