문제
n kg설탕을 3kg/5kg 봉지에 각각 나눠 담는다.
이때 봉지의 개수가 최소가 되는 경우를 구해야 한다.
설탕이 정확히 나누어떨어지지 않는다면 -1을 출력한다.
코드
n = int(input())
# a: 3kg 봉지 개수
# b: 5kg 봉지 개수
b = n//5
a = n-b*5
while (True):
if b == 0 or a % 3 == 0:
break
b -= 1
a = n-b*5
a = a//3
if a*3+b*5 == n:
print(a+b)
else:
print(-1)
풀이
3kg 봉지보다 5kg봉지에 많이 담아야 당연히 봉지의 수가 더 적을 것이다.
그래서 설탕 총 무게를 5kg로 나누었을 때 몫을 구하고,
그 나머지가 3kg로 나누어떨어지는 경우를 구한다.
나누어떨어지지 않는다면 5kg 봉지 수를 -1씩 줄인다.
만약 5kg 봉지 수(b)가 0이 되거나, 나머지 설탕의 무게가 3kg로 나누어떨어지면 반복문을 탈출한다.
a*3kg + b*5kg = nkg 이 맞으면, 봉지 수를 출력하고 틀리면 -1를 출력한다.
'👩🏻💻 Front-end > 👾 Algorithm' 카테고리의 다른 글
백준 2581 - 소수 (Python) (0) | 2022.05.09 |
---|---|
백준 1978 - 소수 찾기 (Python) (0) | 2022.05.09 |
백준 2775 - 부녀회장이 될테야 (Python) (0) | 2022.05.08 |
백준 10250 - ACM 호텔 (Python) (0) | 2022.05.08 |
백준 2869 - 달팽이는 올라가고 싶다 (Python) (0) | 2022.05.07 |