N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오.
첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.
첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다.
1.값을 입력받아 배열에 저장
2.최소,최대값을 저장할 Min,Max 변수 초기화
3.for문을 돌려 해당하는 값 저장
4.출력
Scanner sc = new Scanner(System.in);
int num = Integer.parseInt(sc.nextLine());
int [] arr_int = new int[num];
for(int i = 0; i < arr_int.length; i++) {
arr_int[i] = sc.nextInt();
}
int max = 0;
int min = arr_int[0];
for(int i = 0; i < arr_int.length; i++) {
//최대값
if(max < arr_int[i]) {
max = arr_int[i];
}
}
for(int i = 0; i < arr_int.length; i++) {
//최소값
if(min > arr_int[i]) {
min = arr_int[i];
}
}
System.out.println(min + " " + max);
}
}
코드를 냈더니 90%까지 가서 틀렸다고 나온다.
혹시나 해서 반례를 입력해보았다.
-1 -2 -3 -4 -5
를 입력했더니 최소값은 -5가 나오지만 최대값에서는 0이 나왔다.
Max값도 같이 배열의 첫번째 인덱스 값으로 초기화를 해줘야 한다는걸 알아서
다시 작성하고 제출했더니 맞았다.
Scanner sc = new Scanner(System.in);
int num = Integer.parseInt(sc.nextLine());
int [] arr_int = new int[num];
for(int i = 0; i < arr_int.length; i++) {
arr_int[i] = sc.nextInt();
}
int max = arr_int[0];
int min = arr_int[0];
for(int i = 0; i < arr_int.length; i++) {
//최대값
if(max < arr_int[i]) {
max = arr_int[i];
}
}
for(int i = 0; i < arr_int.length; i++) {
//최소값
if(min > arr_int[i]) {
min = arr_int[i];
}
}
System.out.println(min + " " + max);
}
}
1.Math 클래스의 Min(), Max() 함수를 이용하는 방법이다.
코드는 이렇다.
Scanner sc = new Scanner(System.in);
int num = Integer.parseInt(sc.nextLine());
int [] arr_int = new int[num];
for(int i = 0; i < arr_int.length; i++) {
arr_int[i] = sc.nextInt();
}
int max = arr_int[0];
int min = arr_int[0];
for(int i = 0; i < arr_int.length; i++) {
max = Math.max(max, arr_int[i]);
min = Math.min(min, arr_int[i]);
}
System.out.println(min + " " + max);
}
}
코드의 가독성이 좋아지고 쉽게 풀 수 있었다.