6. 자료구조 & 알고리즘/6-2. 백준

백준 - [10818번 : 최소, 최대]

yunyj99 2022. 6. 10. 10:12

최소, 최대 

 

문제

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

 

 


처음에 난 이런 식으로 풀었다.

 

min과 max 변수를 두고 배열의 값을 하나하나 비교하는 식으로..

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		int cnt = sc.nextInt();
		int[] nums = new int[cnt];
		for (int i = 0; i < cnt; i++) {
			nums[i] = sc.nextInt();
		}

		int min=nums[0], max=nums[0];
		for (int i = 0; i < cnt; i++) {
			if(nums[i] < min) min = nums[i];
			if(nums[i] > max) max = nums[i];
		}
		System.out.println(min + " " + max);
	}
}

 

맞긴한데 다른 분들 코드를 보니 스트림을 이용해 배열을 정렬해서 최소 최대값을 구하는 방법이 있었다.

 import java.util.Arrays;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		int cnt = sc.nextInt();
		int[] nums = new int[cnt];
		for (int i = 0; i < cnt; i++) {
			nums[i] = sc.nextInt();
		}

		Arrays.sort(nums);
		System.out.println(nums[0] + " " + nums[cnt - 1]);
	}
}