⌨️CS-PS/백준_수학&구현

[Baekjoon/백준][25304][C/C++] 영수증

미르의 블로그 2023. 1. 17. 00:11
728x90
반응형
『목차』
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;
}
728x90
반응형