[자바] 백준 10818 : 최대 최소

오늘·2021년 3월 18일
1

백준

목록 보기
1/9

(문제)


방법 1. Array 사용하지 않기 - 실패

int max = -99999, min = 99999; 와 같이 변수 선언 및 초기화를 한 후

for (int i = 0; i < arr.length; i++) {
	if (arr[i] >= max) {
		max = arr[i];
	}
	if (arr[i] <= min) {
		min = arr[i];
	}

이런 식으로 값을 비교하며 일일히 max와 min 변수에 넣어주고 뽑으려 함. 전체 코드는 이런식

import java.util.Scanner;

public class Home {
	public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int max = -99999, min = 99999;
        int num = sc.nextInt();
        int arr[] = new int[num];

		for (int i = 0; i < arr.length; i++) {
			arr[i] = sc.nextInt();
		}
		for (int i = 0; i < arr.length; i++) {
			if (arr[i] >= max) {
				max = arr[i];
			}
			if (arr[i] <= min) {
				min = arr[i];
			}
		}
		System.out.println(min + " " + max);
	}
}

이 방법은 백준에서 오답처리 되었다. 예제를 넣었을 때는 잘 작동하는 것 같았는데 채점이 90%대로 넘어가면서 오답처리가 되었다..

방법 2. Array 사용하기 - 성공

Array를 import 해준 뒤, sort를 사용해 작은 수 -> 큰 수로 정렬된 배열에서 max와 min 값을 뽑아준다

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]);
	}
}

Arrays.sort() = 배열에 저장된 원소 값을 오름차순으로 정렬해주는 것


0개의 댓글

관련 채용 정보