[Baekjoon/백준][25304][C/C++] 영수증
『목차』
0. 개요
1. 문제
2. 풀이
3. 코드
0. 개요
백준은 문제 자체는 어렵지 않지만, 지문이 복잡하여 어렵게 느껴지는 문제들이 종종 있는 것 같다. 이 문제는 반복문과 조건문에 대한 개념만 있다면 쉽게 풀 수 있는 문제이다.
1. 문제
https://www.acmicpc.net/problem/25304
25304번: 영수증
준원이는 저번 주에 살면서 처음으로 코스트코를 가 봤다. 정말 멋졌다. 그런데, 몇 개 담지도 않았는데 수상하게 높은 금액이 나오는 것이다! 준원이는 영수증을 보면서 정확하게 계산된 것
www.acmicpc.net
[문제]
준원이는 저번 주에 살면서 처음으로 코스트코를 가 봤다. 정말 멋졌다. 그런데, 몇 개 담지도 않았는데 수상하게 높은 금액이 나오는 것이다! 준원이는 영수증을 보면서 정확하게 계산된 것이 맞는지 확인해보려 한다.
영수증에 적힌,
- 구매한 각 물건의 가격과 개수
- 구매한 물건들의 총 금액
을 보고, 구매한 물건의 가격과 개수로 계산한 총 금액이 영수증에 적힌 총 금액과 일치하는지 검사해보자.
[입력]
첫째 줄에는 영수증에 적힌 총 금액 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
2. 풀이
영수증에 적힌 총 금액 X와, a*b를 N번 반복한 값들의 합이 서로 일치하면 된다.
코드의 단순함을 위하여 추가 변수 선언 없이, X -= (a * b) 로 위 내용을 판별하게 만들었다.
이후, X값과 if문을 통하여 금액의 일치 여부를 판별하고 해당 값을 출력한다.
3. 코드
#pragma warning(disable:4996) //visual studio scanf 오류 방지.
#include <stdio.h>
int main(int argc, char* argv[]) {
int X = 0;
int N, a, b;
scanf("%d", &X);
scanf("%d", &N);
for (int i = 0; i < N; i++) {
scanf("%d %d", &a, &b);
X -= (a * b);
}
if (X == 0)
printf("Yes");
else if (X!=0)
printf("No");
return 0;
}