본문 바로가기
Programming/PS

[BOJ] C언어 10818 최소,최대

by yoiii 2020. 12. 21.

BOJ C언어 10818 최소,최대 문제풀이

난이도 : BRONZE3


문제

N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오.


입력

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


출력

첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다.


소스코드 

#include <stdio.h>

int main()
{
	int val, i;
	scanf("%d", &val);
	int* arr = (int*)malloc(sizeof(int) * val);

	for (i = 0;i < val;i++) {
		scanf("%d", &arr[i]);
	}

	int max = arr[0], min = arr[0];

	for (i = 0;i < val;i++) {
		if (arr[i] > max) max = arr[i];
		if (arr[i] < min) min = arr[i];
	}

	printf("%d %d", min, max);
	free(arr);
	return 0;
}
#include <stdio.h>

int main() {
	int testCase;
	int i, max = -1000001, min = 1000001, num;	
	scanf("%d", &testCase);

	for (i = 0;i < testCase; i++) {
		scanf("%d", &num);
		if (num > max) max = num;
		if (num < min) min = num;
	}

	printf("%d %d\n", min, max);
	return 0;
}

풀이

2가지 방식으로 풀이했다.

1번째는 배열의 동적할당을 이용해, 배열에 값을 저장한뒤, 최대 최소 알고리즘을 적용한 방식인데,

너무 메모리를 많이 먹어서 다르게 풀이해봤다.

 

다음 풀이는 max 와 min의 값을 미리 초기화 해 두는 풀이이다.

문제 조건에서 모든 수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수라고 제시 하였기에,

max 를 -1,000,001 로 min을 1,000,001 로 초기화 시켰다.


www.acmicpc.net/problem/10818

 

10818번: 최소, 최대

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

www.acmicpc.net

 

'Programming > PS' 카테고리의 다른 글

[BOJ] C언어 2439 별찍기 - 2  (0) 2020.12.22
[BOJ] C언어 2438 별찍기 -1  (0) 2020.12.22
[BOJ] C언어 8393 합  (0) 2020.12.21
[BOJ] C언어 1924 2007년  (0) 2020.12.21
[BOJ] C언어 2739 구구단  (0) 2020.12.21

댓글