문제
준원이는 저번 주에 살면서 처음으로 코스트코를 가 봤다. 정말 멋졌다.
그런데, 몇 개 담지도 않았는데 수상하게 높은 금액이 나오는 것이다!
준원이는 영수증을 보면서 정확하게 계산된 것이 맞는지 확인해보려 한다.
영수증에 적힌,
1. 구매한 각 물건의 가격과 개수
2. 구매한 물건들의 총 금액
을 보고, 구매한 물건의 가격과 개수로 계산한 총 금액이 영수증에 적힌 총 금액과 일치하는지 검사해보자.
https://www.acmicpc.net/problem/25304
입력
첫째 줄에는 영수증에 적힌 총 금액 X가 주어진다.
둘째 줄에는 영수증에 적힌 구매한 물건의 종류의 수 N이 주어진다.
이후 N개의 줄에는 각 물건의 가격 a와 개수 b가 공백을 사이에 두고 주어진다.
출력
구매한 물건의 가격과 개수로 계산한 총 금액이 영수증에 적힌 총 금액과 일치하면 Yes를 출력한다.
일치하지 않는다면 No를 출력한다.
제한
1 <= X <= 1,000,000,000
1 <= N <= 100
1 <= a <= 1,000,000
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
문제 풀이
X = int(input())
N = int(input())
ans = 0
for i in range(N):
a,b = map(int,input().split())
ans += a * b
if ans == X:
print('Yes')
else:
print('No')
주어진 X(금액)와 영수증 금액이 일치하는지 여부에 따라 다른 값을 출력하는 문제입니다.
N(구매 물건한 종류의 수)이 변수이기에, N만큼 반복하는 for문을 활용하여 영수증에 적힌 총 금액을 구했습니다.
주어진 a,b를 기반으로 구한 물건별 구매 금액을 모두 합산하면 영수증에 적힌 총 금액이 됩니다.
이를 위해 총 금액에 해당하는 변수 ans를 먼저 선언했고, for 반복문을 활용하여 각각의 금액을 모두 더하였습니다.
ans = 0
for i in range(N):
a,b = map(int,input().split())
ans += a * b
위와 같이 ans(총 금액)에 해당하는 값을 구한 후, 문제에서 주어진 조건에 맞추어 출력했습니다.
if ans == X:
print('Yes')
else:
print('No')
삼항연산자로는 아래와 같이 작성 가능합니다.
print('Yes') if ans == X else print('No')
저처럼 파이썬을 독학하시는 분들에게 도움이 되길 바라며,
혹 더 좋은 방법이 있거나 오류가 있다면 편하게 말씀 부탁드립니다.