문제
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);
}
}