개발자/C or C++

[백준] 10818번

Mosser 2021. 10. 2. 19:25
728x90
반응형

이 문제는 배열안에 값을 저장하여 배열 안에서 최솟값과 최댓값을 구하여 출력하면 된다.

Main함수에 모든 알고리즘을 구현하여 넣으면 되지만 최근에 함수를 이용하여 프로그램 구현하는걸 연습하고 있으므로 함수를 이용하여 구현하였다.

 

#include <vector>
#include <stdio.h>
#include <iostream>
using namespace std;


int getMAX(vector<int> arr){ //만약 배열의 값이 변경된다면 주소값을 넘겨야하지만 값이 변경되지 않으므로 복사값을 넘긴다.
        int max=arr[0];   // 배열의 첫번째 값을 최대값으로 지정
        int len=arr.size(); // 배열 요소의 개수를 len 변수에 저장

        //0번째 값을 최대값을 저장하였으므로 1번째 값부터 N-1번째 값까지 배열을 순환하면서 현재
         최대값과 값을 비교하여 배열 값이 더 크면 max값을 바꾼다.
        for(int i=1;i<len;i++){ 
                if(max<arr[i])
                        max=arr[i];

        }
        // 배열 순환 후 max값 반환
        return max;


}

int getMIN(vector<int> arr){ //만약 배열의 값이 변경된다면 주소값을 넘겨야하지만 값이 변경되지 않으므로 복사값을 넘긴다.
        int min=arr[0]; //배열의 첫번째 값을 최솟값으로 지정
        int len=arr.size(); // 배열 요소의 개수를 len 변수에 저장


     //0번째 값을 최소값을 저장하였으므로 1번째 값부터 N-1번째 값까지 배열을 순환하면서 현재
         최소값과 값을 비교하여 배열 값이 더 작으면 min값을 바꾼다.
        for(int i=1;i<len;i++){
                if(min>arr[i])   
                        min=arr[i];
        }
        //배열 순환후 min 값 반환
        return min;


}
int main(){
        int N;
        scanf("%d",&N);  //N 입력
        vector<int> arr(N);  //N의 크기만큼 벡터 선언

        int i=0;
        for(i;i<N;i++){
                scanf("%d",&arr[i]);  //N의 크기만큼 배열에 값을 입력하여 집어 넣는다.
        }



        //get MAX
        int max=getMAX(arr);  // 배열에서 최대값을 구하는 함수
        int min=getMIN(arr);  // 배열에서 최솟값을 구하는 함수

        printf("%d %d",min,max);  // 구한 min 값과 max값을 출력

        return 0;



}
반응형