문제
코드
import sys
int = sys.stdin.readline
n = int(input()) #설탕의 총량
a = aa = n // 5
for i in range(a+1, 0, -1):
b = n - (5*aa) #5kg을 빼고 남은 설탕
c = b // 3 #3kg으로 묶은 설탕봉지 수
nn = n - ((5*aa) + (3*c))
if nn == 0:
print(aa + c)
break
else:
aa -= 1
if aa == -1:
print('-1')
break
continue
문제풀이
흔히 볼 수 있는 최소 개수 문제이다.
가장 적은 봉지 개수를 구하는 것은 어렵지 않으나, 이 문제의 관건은 남은 설탕이 0으로 떨어지지 않을 경우 -1을 출력하는 부분에 있을 것이다.
나는 5kg으로 먼저 소분한 후 남은 설탕을 3kg으로 정확히 나누어 떨어지는지의 여부를 기준으로 반복문을 작성하였다.
이때 묶고 남은 설탕이 0인지 아닌지에 따라 정답을 판별하였는데, 나머지가 0인지를 기준으로 둔 후 계산 속도를 비교해보아도 좋을 것 같다.
'Koala - 7기 > 기초 알고리즘 스터디' 카테고리의 다른 글
[백준/python] 4494번 가위 바위 보? (0) | 2022.07.10 |
---|---|
[백준/Python]8393번 합 (0) | 2022.07.10 |
[백준/C++] 5704 팬그램 (0) | 2022.07.10 |
[백준/C++] 11931 수 정렬하기 4 (0) | 2022.07.10 |
[백준/C++] 2010 플러그 (0) | 2022.07.10 |