유랑하는 나그네의 갱생 기록

だけど素敵な明日を願っている -HANABI, Mr.children-

etc./BOJ

백준 10818번 최소,최대

Madirony 2019. 9. 24. 17:23
728x90

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

 

10818번: 최소, 최대

첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.

www.acmicpc.net

분류 : 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