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;
}