ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 25304번 영수증
    백준 코딩테스트/반복문 2024. 10. 17. 22:05

    문제

    준원이는 저번 주에 살면서 처음으로 코스트코를 가 봤다. 정말 멋졌다. 그런데, 몇 개 담지도 않았는데 수상하게 높은 금액이 나오는 것이다! 준원이는 영수증을 보면서 정확하게 계산된 것이 맞는지 확인해보려 한다.

    영수증에 적힌,

    • 구매한 각 물건의 가격과 개수
    • 구매한 물건들의 총 금액

    을 보고, 구매한 물건의 가격과 개수로 계산한 총 금액이 영수증에 적힌 총 금액과 일치하는지 검사해보자.

    입력

    첫째 줄에는 영수증에 적힌 총 금액 X가 주어진다.

    둘째 줄에는 영수증에 적힌 구매한 물건의 종류의 수 N이 주어진다.

    이후 N개의 줄에는 각 물건의 가격 a와 개수 b가 공백을 사이에 두고 주어진다.

    출력

    구매한 물건의 가격과 개수로 계산한 총 금액이 영수증에 적힌 총 금액과 일치하면 Yes를 출력한다. 일치하지 않는다면 No를 출력한다.

    제한

     

    •  1≤X≤1000000000
    •  1≤N≤100
    •  1≤a≤1000000
    •  1≤b≤10

    예제 입력 1 복사

    260000
    4
    20000 5
    30000 2
    10000 6
    5000 8
    

    예제 출력 1 복사

    Yes
    

    영수증에 적힌 구매할 물건들의 목록으로 계산한 총 금액은 20000 × 5 + 30000 × 2 + 10000 × 6 + 5000 × 8 = 260000원이다. 이는 영수증에 적힌 총 금액인 260000원과 일치한다. 

    예제 입력 2 복사

    250000
    4
    20000 5
    30000 2
    10000 6
    5000 8
    

    예제 출력 2 복사

    No

     

     

    total_price =  int(input())
    total_product = int(input())
    total_dict = {}
    for i in range(0, total_product):
        price, number = map(int, input().split())
        try: total_dict[price] += number
        except: total_dict[price] = number

    calculate_price = 0
    for k, v in total_dict.items():
        calculate_price += k * v

    if total_price == calculate_price:
        print('Yes')
    else:
        print('No')

     

    try, except을 통하여 20000원이 처음들어오면 없을때는 생성해주고 만약에 이전에 들어간게 있다면 값을 더해주는 작업을 했다. 이것을 하지 않으면 이후 값으로 덮어져서 이전 값이 사라지는 문제가 있다.

    price를 dict으로 받고 그거를 for문으로 해서 곱하고 더하면 된다.

    '백준 코딩테스트 > 반복문' 카테고리의 다른 글

    2438번 별 찍기 - 1  (0) 2024.10.23
    11022번 A+B - 8  (0) 2024.10.23
    25314번 코딩은 체육과목 입니다.  (0) 2024.10.17
    15552번 빠른 A+B  (1) 2024.10.17
    11021번 A+B - 7  (0) 2024.10.17
Designed by Tistory.