728x90
https://www.acmicpc.net/problem/10818
분류 : C++ 연습용
N개의 정수가 주어지고 여기서 최솟값과 최댓값을 구하는 프로그램을 작성하는 문제입니다.
test case는 아래와 같습니다.
5 << 정수 N개
20 10 35 30 7 << N개만큼 각각의 정수 값 입력
// test 01
n = int(input())
a = input().split()
a = list(map(int,a))
a.sort()
print(a[0],a[n-1])
----------------------
// test 02
a = int(input())
b = input().split(" ")
mn = int(b[0])
mx = int(b[0])
for i in range(a):
if mn > int(b[i]):
mn = int(b[i])
if mx < int(b[i]):
mx = int(b[i])
print(mn ,mx)
python
#include <iostream>
using namespace std;
int main() {
int a = 0,min = 0,max = 0;
cin >> a;
int *arr = new int[a];
for (int i = 0; i < a; i++) {
cin >> arr[i];
}
min = arr[0], max = arr[0];
for (int j = 0; j < a; j++) {
if (min > arr[j]) {
min = arr[j];
}
if (max < arr[j]) {
max = arr[j];
}
}
cout << min << ' ' << max << endl;
delete[] arr;
arr=NULL;
return 0;
}
c++
c++로 동적 할당 연습을 했는데 이런 오류가 떠서 꽤 시간을 많이 버렸습니다.
HEAP CORRUPTION DETECTED: after Normal block
배열의 크기를 벗어난 상태에서 작업을 해서 HEAP CORRUPTION 오류도 뜨고
런타임 에러도 같이 떴습니다..
int a = 0;
int *arr = new int[a];
cin >> a;
디버깅하니 int *arr = new int[a];을 먼저 작성하고 cin >> a;를 그 후에 작성했기 때문에
동적 할당을 한 배열의 크기가 0이 돼버린 초보가 하는 실수를 했습니다.
이런 실수를 하지 않도록 생각을 하면서 코드를 작성해야겠습니다.
728x90
'etc. > BOJ' 카테고리의 다른 글
[BOJ] 21609 상어 중학교 - Java (0) | 2023.03.24 |
---|---|
[BOJ] 17142 연구소 3 - Java (0) | 2023.03.09 |
백준 10989번 수 정렬하기 3 (0) | 2021.08.03 |
백준 1152번 단어의 개수 (0) | 2021.07.23 |
백준 11399번 ATM (0) | 2019.09.21 |