[백준] 10818번 최소, 최대 C++ 문제 풀이 1차원배열

2019. 7. 25. 08:43알고리즘/백준

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


문제 풀이

#include <iostream>
using namespace std;
int main(void){
   int num, count,min = 1000001, max = -1000001;
   cin>>count;
   
    while(cin>>num){
        max = num > max ? num : max;
        min = num < min ? num : min;
    }
    cout << min << " " << max;
}

아무 생각 없이 정렬 알고리즘 돌리다가 시간 초과로 계속 실패했습니다.

 

이런 문제 역시 입력을 한 번에 받아서 최소값, 최대값을 찾는 게 아니라서 입력을 받는 즉시

비교해서 최소값 또는 최대값을 구할 수 있습니다.

 

최소값 min과 최대값 max변수를 선언할 때 min은 입력받을 수 있는 최대값, max는 입력 받을 수 있는 최소값으로 초기화시켜줍니다.

왜냐하면 어떠한 수랑 비교를 하던 맨 처음에 비교하는 수를 대입시키기 위함입니다. 그래야 순수하게 입력받은 값으로만 비교가 가능합니다.

 

입력이 다 끝나면 최소값과 최대값을 양식에 맞춰 출력하면 됩니다. 배열은 쓰지 않았네요..

 

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

 

10818번: 최소, 최대

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

www.acmicpc.net

 

 

728x90
반응형