알고리즘 문제 : 3500원의 돈을 가지고있는데, 이 돈을 가지고 슈퍼에서 돈을 하나도 남기지 않고 구매할 수 있는 모든 경우의 수

조회수 604회

3500원의 돈을 가지고있는데, 이 돈을 가지고 슈퍼에서 돈을 하나도 남기지 않고 구매할 수 있는 모든 경우의 수를 구해야합니다.

메뉴로는 크림빵, 새우깡, 콜라가있으며 각 메뉴의 가격은 500원, 700원, 400원입니다.

단 조건으로는 각 메뉴를 적어도 1개씩은 구매를 해야합니다. 이 문제를 어떻게 풀어야할지 도저히 막막해 감이 오지 않습니다.

혹시 답변이 가능하시다면 라인별로 주석으로 설명도 간략하게 달아주시면 정말 이해하는데 도움이 될것같습니다. 답변달아주시면 해당 코드를 가지고 문제를 조금 수정해서 다시 공부를 해보려고합니다.

작성 언어는 파이썬입니다.

  • 5 * a + 7 * b + 4 * c == 35 을 만족하는 a, b, c 값을 찾으면 됩니다 HIAOAIH 2020.6.15 16:03
  • 댓글 감사합니다! 알 수 없는 사용자 2020.6.15 16:43

1 답변

  • sum = 3500
    a = 500
    b = 700
    c = 400
    
    a_max = int(sum / a) + 1
    b_max = int(sum / b) + 1
    c_max = int(sum / c) + 1
    
    for i in range(0, a_max):
        for j in range(0, b_max):
            for k in range(0, c_max):
                tmp = i * a + j * b + k * c
                if (tmp == 3500) and (i > 0) and (j > 0) and (k > 0):
                    print(i, j, k)
    

    경우의수 완전탐색하시면 됩니다.

    • 경우의수 완전탐색 << 요걸 토대로 검색해서 찾아보면 될까요 선생님? 알 수 없는 사용자 2020.6.15 16:43
    • 글쎄요;; 저도 알고리즘 모르고 그냥 문제보면 가격 3500을 넘지않는 abc조합의 경우의수를 완전탐색하면 될거 같은데요 김호원 2020.6.16 08:53

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)