관리 메뉴

솜씨좋은장씨

[BaekJoon] 25166번 : 배고픈 아리의 샌드위치 구매하기 (Python) 본문

Programming/코딩 1일 1문제

[BaekJoon] 25166번 : 배고픈 아리의 샌드위치 구매하기 (Python)

솜씨좋은장씨 2022. 9. 27. 21:01
728x90
반응형

코딩 1일 1문제! 오늘의 문제는 백준의 배고픈 아리의 샌드위치 구매하기 입니다.

 

25166번: 배고픈 아리의 샌드위치 구매하기

"두리"라는 나라가 있다. 이 나라에서 사용되는 동전은 1원, 2원, 4원, 8원, 16원, 32원, 64원, 128원, 256원, 512원짜리 이렇게 총 10가지이다. 이 나라의 국민인 아리는 10가지의 동전을 각각 1개씩 총 10

www.acmicpc.net

👨🏻‍💻 코드 ( Solution )

def calculate_coin_num_and_extra_money(money, coin_list, max_coin_num):
    coin_num_dict = {}
        
    for coin in coin_list:
        if money == 0:
            break

        for _ in range(max_coin_num):
            if money >= coin:
                if coin not in coin_num_dict.keys():
                    coin_num_dict[coin] = 0
                coin_num_dict[coin] += 1
                money -= coin   
            
    return coin_num_dict, money


def check_can_borrow_money(more_need_coin, cookie_coin):
    is_can_borrow = True
    
    coin_list = sorted(list(cookie_coin.keys()), reverse=True)
    
    coin_dict, extra_money = calculate_coin_num_and_extra_money(
        money=more_need_coin, coin_list=coin_list, max_coin_num=1)
    
    if extra_money > 0:
        is_can_borrow = False
            
    return is_can_borrow


def hungry_ari_buy_sandwich(S, M, coin_list):
    answer = "No thanks"
    
    sandwich_price_need_coin, sandwich_extra_money = calculate_coin_num_and_extra_money(
        money=S, coin_list=coin_list, max_coin_num=1
    )
    
    cookie_coin, cookie_extra_money = calculate_coin_num_and_extra_money(
        money=M, coin_list=coin_list, max_coin_num=1
    )
    
    if sandwich_extra_money > 0:
        is_can_borrow = check_can_borrow_money(
            more_need_coin=sandwich_extra_money, cookie_coin=cookie_coin
        )
        
        if is_can_borrow:
            answer = "Thanks"
        else:
            answer = "Impossible"
            
    return answer
        

if __name__ == "__main__":
    S, M = map(int, input().split())
    
    coin_list = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512]
    
    print(hungry_ari_buy_sandwich(S, M, sorted(coin_list, reverse=True)))
 

GitHub - SOMJANG/CODINGTEST_PRACTICE: 1일 1문제 since 2020.02.07

1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub.

github.com

Comments