[백준 2839] 설탕 배달 / 파이썬

권한·2026년 3월 7일

BOJ

목록 보기
40/40

사탕가게에 설탕을 정확하게 Nkg 배달해야한다. 설탕은 3kg봉지와 5kg봉지가 존재하며, 최대한 적은 봉지를 가지고 배달을 간다.
Nkg 배달할 경우 봉지 몇 개를 가지고 가면 되는가?(정확하게 만들 수 없는 경우 -1을 출력한다) 가 문제이다.

먼저 5로 나누고 나머지를 3으로 나누게끔 코드를 짰다.

n = int(input())

count = n // 5
n %= 5
if n % 3 == 0:
    count += n // 3
    if n % 3 != 0:
        print(-1)
    else:
        print(count)
print(-1)

6kg같은 경우 5로 나누게되면 나머지가 1로 실패하지만 3kg짜리 두 개를 들고간다는 정답이 존재한다. 그냥 이상하다. 내가 왜 이렇게 코드를 짠거지??... print도 중복으로 출력을 한다. 뇌빼고 짰나보다... if문안에 있는 저 if문은 정체가 뭐냐며...

5로 나누어 떨어진다면 개수를 출력해서 반복문을 빠져나가고, 아니라면 -3씩 빼서 개수를 1씩 더한다. while-else문은 while문이 중단 없이 끝나는 경우(break) 실행하는 코드다.

while n >= 0:
    if n % 5 == 0:
        count += n // 5
        print(count)
        break
    n -= 3
    count += 1
else:
    print(-1)
profile
티스토리로 옮김

0개의 댓글