[백준/Python] 2839 설탕 배달

재활용병·2024년 1월 15일
0

코딩 테스트

목록 보기
60/157

[백준/Python] 2839 설탕 배달


정답 코드 및 설명

n = int(input())

result = 0
while n > 0:
    if n % 5 == 0:  # 5킬로그램 봉지로 정확히 나누어 떨어지는 경우
        result += n // 5
        n = 0
        break
    n -= 3  # 5킬로그램 봉지로 나누어 떨어지지 않으면 3킬로그램 봉지 사용
    result += 1

if n < 0:  # 정확한 무게를 만들 수 없는 경우
    result = -1

print(result)

킬로 수에 해당하는 n을 입력받고 result 에는 봉지 수를 저장한다.

while 반복문을 통해서 문제를 해결한다

n 이 5로 나누어 떨어지면 5로 나눈 값이 바로 봉지 수 이기에 몫을 result 에 반복문을 빠져나오기 위해 break, n = 0 으로 해주는 이유는 나누어 떨어지지 않을 경우를 판별하기 위해서이다.

5로 나누어 떨어지지 않을 경우는 3킬로그램 봉지를 사용하기 때문에 n - 3 과 봉지 수 + 1 해준다.

반복문을 빠져나왔으면 그대로 값을 출력하면 되지만, 5킬로 와 3킬로 봉지로 정확한 무게를 만들 수 없는 경우를 n < 0 이라고 했다

이는 완벽히 나누어 떨어지지 않는다면 반복문 내에서 n -= 3 부분이 있기에 n이 음수가 되기 때문이다.

profile
코딩 말고 개발

0개의 댓글

관련 채용 정보