[백준] 2839번(설탕 배달)

·2022년 11월 13일

백준 문제풀이

목록 보기
24/159

백준 2839번


최종 제출 코드

number = int(input())
THREE = 0
FIVE = 0

while(number >= 3):
  if (number % 5 == 0):
    FIVE = int(number/5)
    # 결과값을 도출할 때 조건분기를 위한 코드
    # result변수가 5로 나누어 떨어질때는 number에서 값을 빼주지 않기 때문에
    # 자체적으로 number를 0으로 만들어주었다
    number = 0
    break
  number = number - 3
  THREE += 1

if number != 0:
  print(-1)
else:
  print(THREE+FIVE)
  • 최소 개수를 구해야하기 때문에 먼저 number를 5로 나누어 본다.
    ex) 15의 경우 3와 5의 공배수이기 때문에 3으로 먼저 나눠볼 경우, 출력값이 5가 된다. 하지만 문제에서는 최소 개수를 구하라고 했으므로 3이 출력되어야 한다.
  • 값이 5로 나누어 떨어지지 않는 경우, number에서 3을 빼준다.
  • 위의 과정을 number가 3보다 작아질때까지 반복한다.

수정한 코드

number = int(input())
result = 0

while(number >= 3):
  if (number % 5 == 0):
    result += int(number/5)
    number = 0
    break
  number = number - 3
  result += 1

if number != 0:
  print(-1)
else:
  print(result)
  • 결과값 도출을 좀 더 직관적이게 알아볼 수 있도록 FIVE변수와 THREE변수를 따로 선언하지 않고 result변수로 선언하며 개수를 계속 더해주었다.
profile
백엔드 개발자가 되고 싶어요(22.8.15~)

0개의 댓글