AngelPlayer`s Diary

링크

https://www.acmicpc.net/problem/2839

 

2839번: 설탕 배달

상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그

www.acmicpc.net

 

 

 

문제 해석:

input 값을 5와 3으로 최대한 적은 몫을 만든다.

0으로 나누어 떨어지지 않을 때는 -1을 출력한다.

 

 

 

코드:

kg = int(input(''))

big_bag = 5 # 5kg짜리 비닐
small_bag = 3 # 3kg짜리 비닐
result = -1
big_bag_max = kg // big_bag

for i in reversed(range(big_bag_max+1)):
	if result != -1:
		break

	if (kg - (big_bag * i)) % small_bag == 0:
		result = i + ((kg - (big_bag * i)) // small_bag)
		break

print(result)

 

 

 

코드 해석:

우선 5kg에 담을 수 있는 최대치(big_bag_max)를 구하였습니다.

(최대한 적은 비닐 개수를 써야하기 때문에)

 

그리고 reversed()을 이용한 역for문으로 5kg 비닐에 최대한 담아 남은 설탕이 3kg에 나누어 떨어진다면 결과를 도출하고,

떨어지지 않는다면 5kg 적은 양을 다시 3kg에 대입하여 나누어 떨어지는지를 확인합니다.

 

결국 모든 경우의 수를 확인했을 때 나누어떨어지지 않는다면 -1을 반환합니다.

 

 

 

 

 

 

 

 

해당 코드는 에디터가 코드 연습을 위해 직접 작성하였습니다.

혹시 오류가 있거나 더 좋은 코드 방향성을 아시는 분은 댓글로 남겨주시면 감사하겠습니다..!

공유하기

facebook twitter kakaoTalk kakaostory naver band