[C++] 백준 25304번 문제 : 영수증 - 동적 할당

wansuper·2023년 2월 19일
0

CodingTest

목록 보기
5/34

해당 문제를 풀다가 Visual Studio에서는 다음과 같은 오류가 뜨고, 신기하게 백준에서는 정답 처리가 된 경우가 있었다.

오류(활성) E0028 식에 상수 값이 있어야 합니다. BaekJoon C:\CPP\Study_alone\BaekJoon\BaekJoon.cpp 9

내가 작성한 코드는 다음과 같다.

#include <iostream>
using namespace std;

int main() {
	
	int all, x; int a, b; int sum = 0;
	cin >> all;
	cin >> x;
	int y[x];
	for (int i = 0; i < x; i++) {
		cin >> a >> b;
		y[i] = a * b;
	}
	for (int i = 0; i < x; i++) {
		sum = sum + y[i];
	}
	if (sum == all) { cout << "Yes" << endl; }
	else { cout << "No" << endl; }
	
	return 0;
}

백준에서 질문글을 달았는데 친절하신 고수님이 다음과 같은 답변을 주셨다.

즉, 수정해서 다시 코드를 입력하면 다음과 같다.

#include <iostream>
using namespace std;

int main() {
	
	int all, x; int a, b; int sum = 0;
	cin >> all;
	cin >> x;

	int* arr = new int[x];

	for (int i = 0; i < x; i++) {
		cin >> a >> b;
		arr[i] = a * b;
	}
	for (int i = 0; i < x; i++) {
		sum = sum + arr[i];
	}
	if (sum == all) { cout << "Yes" << endl; }
	else { cout << "No" << endl; }

	delete[] arr;
	return 0;
}

학습해야할 개념

배열

동적할당(new / delete의 사용)

(+추가 23.02.24/ 유사 문제 백준 15552번: 빠른 A+B)

#include <iostream>
using namespace std;

int main() {
	
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	int t; int a, b;
	cin >> t;
	int* arr = new int[t]; // 동적 할당 new를 사용해서 풀 수 있었다.
	for (int i = 0; i < t; i++) {
		cin >> a >> b;
		arr[i] = a + b;
	}
	for (int i = 0; i < t; i++) {
		cout << arr[i] << "\n";
	}
	delete[] arr; // new는 delete와 함께 다니기
	return 0;
}
profile
🚗 Autonomous Vehicle 🖥️ Study Alone

0개의 댓글