[C]백준_10818 : 최소, 최대

Alal11·2022년 11월 1일
0
post-thumbnail

출처

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


문제

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


입력

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


출력

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


예제 입출력


알고리즘 분류

  • 수학
  • 구현

➡️문제 분석

조건 연산자를 이용하여 최대, 최소 값을 구한다.

조건 연산자란?

조건 ? TRUE : FALSE


c = num1 > num2 ? num1 : num2
# num1 > num2 조건식이 참이라면 c = num1, 거짓이라면 c = num2

➡️코드(⭕)

#include <stdio.h>

int main(void)
{
	int N, min = 1000001, max = -1000001;
	int num[1000001];

	scanf_s("%d", &N);

	for (int i = 0; i < N; i++)
	{
		scanf_s("%d", &num[i]);

		min = (min < num[i]) ? min : num[i];
		max = (max > num[i]) ? max : num[i];

	}
	printf("%d %d", min, max);

	return 0;
}

➡️코드 분석

  1. 정수의 개수 N을 입력받고, N 만큼 반복해준다.

  2. 배열 num에 N개의 값을 입력받는다.

  3. 조건 연산자를 이용하여 배열 num 중에서 최솟값과 최댓값을 구한다.

  4. min과 max의 초깃값을 각각 1000001, -1000001로 해주어 처음 조건 연산자의 num[0] 값이 무조건 min과 max가 되게 하고 그 다음 num[1] 부터 num[N-1]까지 쭉 비교해준다.


➡️end

min과 max를 정수 범위보다 무조건 크고, 작게 하여 맨 처음 비교값이 무조건 min과 max가 되게 하는 방법이 정말 좋은 아이디어 같다!

10월 한달동안 시험 공부하고 이것저것 학교생활 하느라 포스팅을 못했다...
사실 다 핑계고 앞으로는 아무리 바빠도 일주일에 한 번씩은 꼭 포스팅 하자!!!

0개의 댓글