최소, 최대
문제
N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.
출력
첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다.
예제 입력 1
5
20 10 35 30 7
예제 출력 1
7 35
풀이
import java.util.Scanner;
public class B10818 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int[] arr = new int[N];
int max = -1000000;
int min = 1000000;
for (int i = 0; i < arr.length; i++) {
arr[i] = sc.nextInt();
if (arr[i] > max) { // 만약 arr[0]번째가 현재 max보다 크면 그게 최대
max = arr[i];
}
if (arr[i] < min) {
min = arr[i];
}
}
System.out.println(min + " " + max);
sc.close();
}
}
틀린시도
첫 시도를 이렇게 풀었었는데 틀렸었다.
import java.util.Scanner;
public class B10818 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int[] arr = new int[N];
int max = -1000000;
int min = 1000000;
for (int i = 0; i < arr.length; i++) {
arr[i] = sc.nextInt();
if (arr[i] > max) { // 만약 arr[0]번째가 현재 max보다 크면 그게 최대
max = arr[i];
} else if (arr[i] < min) {
min = arr[i];
}
}
System.out.println(min + " " + max);
sc.close();
}
}
모든 수가 음수일 때 이상하게 나온다.
만약 배열에 수가 하나인 경우엔 그 수가 최소값이자 최대값이 되겠지만 if - else if문을 사용하면 둘 중 하나만 갱신되기 때문에 값이 제대로 반영되지 않는다.
'알고리즘 공부 > 백준 문제풀이' 카테고리의 다른 글
[백준] 2742 : 기찍 N -(JAVA) (0) | 2022.09.06 |
---|---|
[백준]8958 : OX퀴즈 - (JAVA) (0) | 2022.09.04 |
[백준] 2920 음계 - (JAVA) (0) | 2022.09.03 |
[백준] 2675 문자열 반복 - (JAVA) (0) | 2022.09.02 |
[백준] 10798 : 세로읽기 - (JAVA) (0) | 2022.09.02 |