정리하고기록하자

백준 (JAVA) - 최소,최대 (10818) 본문

백준 - 알고리즘

백준 (JAVA) - 최소,최대 (10818)

정리하고기록하자 2021. 11. 15. 13:11
반응형

백준 - 알고리즘 1차원배열 최소,최대 (10818) 문제

 

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

 

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

 

 

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int min = 1000000; // 모든정수는 - 100000 보다 크거나 같다
		int max = -1000000; // 모든 정수는 100000 보다 작거나 같다
		   
	}
}

우선 문제에서 N개의 정수가 주어지고,

N은 1,000,000 보다 작거나 크고

N은 -1,000,000 보다 크거나 같다.

 

N개의 정수가 주어졌을때 배열의 크기를 선언했다.

int a = sc.nextInt(); // 첫번째 줄의 정의한 값
int[] arr = new int[a]; // 배열의 크기 선언

 

최소값, 최대값 가져오기는 구글링을 해서 코드를 입력했다.

for(int i = 0 ; i < arr.length; i ++) { // 배열 크기 만큼 반복문 돌린다.
	arr[i] = sc.nextInt();

// -------------- 최소값 최대값 조회 구글링 -------
	if(max < arr[i]) {  
		max = arr[i];
	}
	if(min > arr[i]) {
		min = arr[i];
	}
// -----------------------------------------
}

배열의 크기 만큼 반복문을 돌려서 최소값,최대값을 구한다.

System.out.println(min +" "+ max);

마지막으로 출력했다.

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int min = 1000000; // 모든정수는 - 100000 보다 크거나 같다
		int max = -1000000; // 모든 정수는 100000 보다 작거나 같다
		   
		int a = sc.nextInt(); // 첫번째 줄의 정의한 값
		int[] arr = new int[a]; // 배열의 크기 선언
		
		for(int i = 0 ; i < arr.length; i ++) { // 배열 크기 만큼 반복문 돌린다.
			arr[i] = sc.nextInt();
			
			// -------------- 최소값 최대값 조회 구글링 -------
			if(max < arr[i]) {  
				max = arr[i];
			}
			if(min > arr[i]) {
				min = arr[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 num = sc.nextInt();
		int arr[] = new int[num];

		// 배열의 길이만큼 돌면서 i에 입력값을 받는다
		for (int i=0; i<arr.length; i++) {
			arr[i] = sc.nextInt();
		}
	
		// sort를 사용해 배열을 정렬한다
		Arrays.sort(arr);

		// 정렬된 배열의 가장 작은 수
		// 0번 인덱스의 것 = min 값
		// 배열길이 -1 인덱스의 것 = max 값
		System.out.println(arr[0] + " " + arr[num - 1]);
	}
}

왜 이렇게 생각을 하지 못했을까..

속도 차이도 엄청 난다.

 

반응형