BOJ2839-설탕 배달 (python3)

Ok Haeeun·2023년 1월 30일
0

오늘의 문제는 간단한 듯 보이지만 조건문에 꽤 신경을 써줘야했던 문제였다.
나는 소인수분해처럼 5와 3에 숫자를 일일이 곱해 비교하는 방식으로 중첩 for문을 사용했는데, 더 효율적인 방법이 있을 것이라 생각한다.

현재는 너무 추워서 이불속에서 좌식으로 푸느라 허리가 너무 아프므로..얼른 끝내보도록 하겠다.
더 좋은 방법이 있으면 내일 찾아서 올리겠음..

import math
bag = int(input())
result = -1

for i in range(math.ceil(bag/3)+1):
    for j in range(math.ceil(bag/5)+1):
        if bag==(5*j)+(3*i) and (result > i+j or result==-1) :
            result = i+j
            break
    if result != -1:
        break
print(result)

주어지는 숫자에 따라

  • 5의 배수인 경우
  • 3의 배수인 경우
  • 둘다 아니지만 조합으로 완성되는 경우
  • 조합으로도 완성할 수 없는 경우

로 나눌 수 있는데

하나하나 if 문으로 걸러주기엔 복잡해질 것 같아
5j + 3i를 계산하는 방식을 이용했다.

중첩 for문을 나갈때는 한방에 나가는 방법은 없고,
안쪽에서 break를 써준 후, 안쪽 for문을 나갔을 경우 조건문으로 break를 한번 더 걸어주는 방식을 사용해야한다는 것을 배웠다.

profile
tistory에 이어서 기록합니다 👉 https://i-m-okay.tistory.com/

0개의 댓글

관련 채용 정보