- 문제
- 동적 할당을 이용한 정답코드
#include<iostream>
using namespace std;
int main() {
int length = 0;
cin >> length;
int* num = new int[1000000]; // 동적할당 이용
for (int i = 0; i < length; i++) {
cin >> num[i];
}
int min = 1000000, max = -1000000;
// 최소
for (int i = 0; i < length; i++) {
if (min > num[i]) {
min = num[i];
}
}
// 최대
for (int i = 0; i < length; i++) {
if (max < num[i]) {
max = num[i];
}
}
cout << min << " " << max;
delete[] num;
return 0;
}
- 정적할당 시 문제점
main 안에서 정적할당으로 하면 스택 사이즈가 초과되는 문제가 발생한다.
int num[1000000];
전역변수를 이용하면 위의 문제가 발생하지 않는다.
정적할당 시 전역변수로
#include<iostream>
using namespace std;
int num[1000000]; // 스택 오버플로우 방지
int main() {
int length = 0;
cin >> length;
for (int i = 0; i < length; i++) {
cin >> num[i];
}
int min = 1000000, max = -1000000;
// 최소
for (int i = 0; i < length; i++) {
if (min > num[i]) {
min = num[i];
}
}
// 최대
for (int i = 0; i < length; i++) {
if (max < num[i]) {
max = num[i];
}
}
cout << min << " " << max;
return 0;
}
'프로그래밍 > 백준(C++)' 카테고리의 다른 글
[알고리즘] 백트래킹(Backtracking) (1) | 2024.12.27 |
---|---|
[C++] '<<' , '>>' 비트 시프트 연산(bit shift) (0) | 2024.12.26 |