본문 바로가기

Algorithm/BaekJOON(Java)

[백준/Boj] 10818번 Java 풀이 코드

문제

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

입력

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

출력

첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다.

풀이

1. 실패 코드 1(시간초과)

 

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        int max = -1000000;
        int min = 1000000;

        if(n>= 1 && n<= 1000000){
            for(int i=0; i<n; i++){
                int[] numbers = new int[n];
                numbers[i] = scan.nextInt();

                if(numbers[i] < max){
                    min = numbers[i];
                }else{
                    max = numbers[i];
                }
            }
            System.out.printf("%d %d\n", min,max);
        }
    }
}

 

2.실패 코드 2(시간초과)

 

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        int max = Integer.MIN_VALUE;
        int min = Integer.MAX_VALUE;

        if(n>= 1 && n<= 1000000){
            for(int i=0; i<n; i++){
                int[] numbers = new int[n];
                numbers[i] = scan.nextInt();
                min = Math.min(min, numbers[i]);
                max = Math.max(max, numbers[i]);
            }
            System.out.printf("%d %d\n", min,max);
        }
    }
}

 

3. 성공 코드(풀기는 했는데 좋은 코드는 아닌 것 같다..ㅠㅠ)

 

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

        int n = scan.nextInt();
        int max = -1000000;
        int min = 1000000;
        int[] numbers = new int[n];
        for(int i: numbers){
            numbers[i] = scan.nextInt();
            min = Math.min(min, numbers[i]);
            max = Math.max(max, numbers[i]);
        }
        System.out.printf("%d %d\n", min,max);
    }
}