본문 바로가기
프로그램/C언어 1000제

C언어 159제] 동적메모리를 활용한 최대값, 최소값 구하기

by 건티 2024. 9. 9.
728x90

출처 : 반크_세계유산 창덕궁

 

문제]

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

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

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

예제 입력 1 
5
20 10 35 30 7

 

예제 출력 1 
7 35


출처 : 백준_10818

 

 

참고풀이]

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h> //malloc(), free()

int main()
{
   int N;//정수의 개수를 입력받는다.
   int i;//인덱스 또는 반복변수
   int Max, Min;//최대값과 최소값 변수

   scanf("%d", &N);
   if (N >= 1 && N <= 1000000)
   {
      //N개의 정수가 입력될 동적배열을 설정한다.
      int* M = (int*)malloc(sizeof(int) * N);

      //선언된 동적배열에 자료를 입력받는다.
      for (i = 0; i < N; i++)
      {
         scanf("%d", &M[i]);
         if (M[i] >= -1000000 && M[i] <= 1000000);
         //조건에 맞지 않는 값이 입력되면 작업을 종료한다.
         else return 0; 
      }

      //최대값과 최소값을 구한다.
      Max = M[0];
      Min = M[0];
      for (i = 1; i < N; i++)
      {
         if (Max < M[i]) Max = M[i];
         if (Min > M[i]) Min = M[i];
      }

      //결과출력
      printf("%d %d", Min, Max);

      //설정된 동적배열을 해제한다.
      free(M);
   }

   return 0;
}

 

 

참고풀이 결과]

 

 

 

 

 

대한민국의 아름다운 영토, 독도의 여름

 

반응형

댓글