접근 방법
상근이는 최대한 적은 봉지를 들고 가려고 한다.
가장 적은 수의 봉지를 들고 가려면, 가능한 한 5kg의 봉지를 많이, 3kg의 봉지를 적게 구성해야 한다.
정답 코드
import sys
n = int(sys.stdin.readline())
flag = 0
for i in range((n // 3) + 1):
three = 3 * i
five = (n - three) / 5
if five == int(five):
print(int(i + five))
flag = 1
break
if flag == 0:
print(-1)
코드 설명
- 3kg 봉지의 수가 0개인 경우 -> 1개인 경우 -> .... -> n//3개인 경우 까지 for문을 반복한다.
- 각 경우에 five 변수는 n에서 three를 뺀 것을 5로 나눈 것으로, 5kg 봉지의 개수를 의미한다.
- 이때 five == int(five)라면 정확히 나누어떨어졌다는 의미이므로 개수를 출력하고 빠져나온다. (flag = 1)
- flag = 1이 아닌 경우 -1을 출력한다.
'알고리즘 > 백준' 카테고리의 다른 글
[백준 알고리즘] 2231번: 분해합 (파이썬 / Python) (1) | 2022.08.03 |
---|---|
[백준 알고리즘] 10814번: 나이순 정렬 (파이썬 / Python) (0) | 2022.08.02 |
[백준 알고리즘] 17478번: 재귀함수가 뭔가요? (파이썬 / Python) (0) | 2022.08.02 |
[백준 알고리즘] 10870번: 피보나치 수 5 (파이썬 / Python) (0) | 2022.08.02 |
[백준 알고리즘] 2805번: 나무 자르기 (파이썬 / Python) (0) | 2022.08.02 |