본문 바로가기
재밌는 수학 퀴즈와 문제

500원 동전 3개, 100원 동전 5개, 50원 동전 4개가 들어있는 저금통에서 몇 개를 꺼냈더니 1200원입니다. 1200원이 되는 경우의 수는 모두 몇 가지인가요?

by silvermath 2024. 2. 17.
반응형

500원 동전 3개, 100원 동전 5개, 50원 동전 4개가 들어있는 저금통에서 몇 개를 꺼냈더니 1200원입니다. 1200원이 되는 경우의 수는 모두 몇 가지인가요?

1200원을 만드는 경우의 수를 찾기 위해, 500원, 100원, 50원 동전을 사용하는 경우의 수를 계산해 보겠습니다. 각 동전의 최대 개수는 500원 동전 3개, 100원 동전 5개, 50원 동전 4개로 제한됩니다.

문제를 단순화하기 위해, 다음과 같은 방식으로 접근할 수 있습니다:

  1. 500원 동전의 개수를 결정합니다. 가능한 경우는 0개, 1개, 2개, 최대 3개까지입니다. 500원 동전 3개를 사용하면 1500원이 되므로, 1200원을 만들기 위해 최대 2개까지만 사용할 수 있습니다.
  2. 500원 동전의 개수에 따라 남은 금액을 100원 동전과 50원 동전으로 채워 나갑니다.
  3. 각 경우에 대해 100원 동전과 50원 동전으로 만들 수 있는 조합을 찾습니다.

이 문제를 해결하기 위해 간단한 프로그램을 작성하여, 가능한 모든 조합을 계산하고 그 개수를 찾아보겠습니다.

1200원을 만드는 경우의 수는 모두 4가지입니다. 이는 주어진 동전들의 조합을 통해 1200원을 정확히 만들 수 있는 다양한 방법이 4가지입니다.

caption: 달리가 그린 돼지저금통

찾는 과정

1200원을 만드는 4가지 경우는 다음과 같습니다:

  1. 500원 동전 1개, 100원 동전 5개, 50원 동전 4개
  2. 500원 동전 2개, 100원 동전 0개, 50원 동전 4개
  3. 500원 동전 2개, 100원 동전 1개, 50원 동전 2개
  4. 500원 동전 2개, 100원 동전 2개, 50원 동전 0개

이러한 조합들은 주어진 동전들로 1200원을 정확히 만들 수 있는 다양한 방법을 보여줍니다. 각각의 경우는 동전의 사용량과 조합이 다르며, 이를 통해 수학적인 조합과 문제 해결 능력을 키울 수 있습니다.

 

파이썬 프로그램

# 동전의 종류와 각각의 최대 개수
coin_types = [500, 100, 50]
max_counts = [3, 5, 4]  # 각각 500원, 100원, 50원 동전의 최대 개수

# 목표 금액
target_amount = 1200

# 경우의 수를 계산하고 결과를 출력하는 함수
def find_combinations_to_make_amount(coin_types, max_counts, target_amount):
    combinations_found = []

    for five_hundred_count in range(max_counts[0] + 1):
        for one_hundred_count in range(max_counts[1] + 1):
            for fifty_count in range(max_counts[2] + 1):
                total_amount = (five_hundred_count * coin_types[0] +
                                one_hundred_count * coin_types[1] +
                                fifty_count * coin_types[2])
                
                if total_amount == target_amount:
                    combinations_found.append((five_hundred_count, one_hundred_count, fifty_count))
    
    return combinations_found

# 조합 찾기
combinations = find_combinations_to_make_amount(coin_types, max_counts, target_amount)

# 결과 출력
if combinations:
    print(f"총 {len(combinations)}가지 방법으로 1200원을 만들 수 있습니다:")
    for i, (five_hundreds, one_hundreds, fifties) in enumerate(combinations, 1):
        print(f"방법 {i}: 500원 동전 {five_hundreds}개, 100원 동전 {one_hundreds}개, 50원 동전 {fifties}개")
else:
    print("1200원을 만들 수 있는 방법이 없습니다.")

# 실제로 함수를 호출하여 결과를 확인
find_combinations_to_make_amount(coin_types, max_counts, target_amount)