[백준BOJ25304/C++풀이] 영수증

현도영·2023년 12월 1일
0

백준풀이

목록 보기
14/18

https://www.acmicpc.net/problem/25304


초반부에 이렇게 제출했었는데 틀렸다는 결과만 나와서 당황했습니다.

#include <iostream>
using namespace std;

int main() {
	long X;
	int N, a, b, sum;
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);

	cin >> X;
	cin >> N;
	
	for (int i = 0; i < N; i++) {
		cin >> a >> b;
		sum += a * b;
	}

	if (sum == X) cout << "Yes";
	else cout << "No";
	return 0;
}

문제점을 알 수가 없어서 질문 게시판을 이용했어요.


풀이

결론부터 적자면 sum을 초기화하지 않아서 틀린 거였습니다.
sum = 0 으로 초기화를 하니 맞았습니다.

변수를 선언했을 때 초기화를 하지 않는다면 쓰레기값이 담는다고 합니다.
초기화한 상태에서 sum += a * b; 같은 연산을 한다면 쓰레기값에서 더해지는 겁니다.
오류가 발생할 수도 있고, 정상적인 작동을 위해선 초기화가 필요합니다.


제출

#include <iostream>
using namespace std;

int main() {
	int X, N, a, b;
	int sum = 0;
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);

	cin >> X;
	cin >> N;
	
	for (int i = 0; i < N; i++) {
		cin >> a >> b;
		sum += a * b;
	}

	if (sum == X) cout << "Yes";
	else cout << "No";
	return 0;
}
profile
코딩초보의 공부용

0개의 댓글