첫째줄에 수열에 들어갈 정수의 개수, 둘째줄에는 배열 각 자릿수에 들어갈 정수들을 입력했다.
입력시 공백을 분류하여 값이 대입되도록 구분해주도록 하자.
먼저 처음 구성했던 코드이다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException { // 버퍼리더 사용시 반드시 예외처리 필요
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer str = new StringTokenizer(br.readLine(), " "); // 입력받은 값에서 빈칸을 구분함.
int N = Integer.parseInt(str.nextToken());
long[] A = new long[N];
str = new StringTokenizer(br.readLine(), " "); // 새로운 값 입력
for (int i = 0; i < A.length; i++) {
A[i] = Integer.parseInt(str.nextToken()); // 수열 A에 들어가는 값들
}
long max = 0;
long min = 0;
for (int i = 0; i < A.length; i++) {
if (max < A[i]) {
max = A[i];
}
}
for (int i = 0; i < A.length; i++) {
if (min > A[i]) {
min = A[i];
}
}
System.out.println((min) + " " + (max));
}
}
위의 코드와 같이 구성할 경우 결과값은 이러한 식으로 도출되게 된다.
5
20 10 35 30 7
0 35 // 결과값
위의 예제를 대입하면 최소값이 0으로 출력되는 문제가 발생한다. 어떤 식으로 해결해야 할까?
문제는 간단하다.
최대,최소값을 출력해주는 min
, max
값이 각각 0으로 지정되어 있어서 발생한 문제이다.
문제에서 모든정수는-1,000,000 ≤ N ≤ 1,000,000
의 범위를 가진다고 하였으니,
이를 통해서 다시 코드를 수정해주었다.
(추가적으로 최대 최소값의 두 반복문도 하나로 합쳐주었다.)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException { // 버퍼리더 사용시 반드시 예외처리 필요
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer str = new StringTokenizer(br.readLine(), " "); // 입력받은 값에서 빈칸을 구분함.
int N = Integer.parseInt(str.nextToken());
long[] A = new long[N];
str = new StringTokenizer(br.readLine(), " "); // 새로운 값 입력
for (int i = 0; i < A.length; i++) {
A[i] = Integer.parseInt(str.nextToken()); // 수열 A에 들어가는 값들
}
long max = -1000000;
long min = 1000000;
for (int i = 0; i < A.length; i++) {
if (max < A[i]) {
max = A[i];
}
if (min > A[i]) {
min = A[i];
}
}
System.out.println((min) + " " + (max));
}
}
아래와 같이 정상적으로 출력됨을 확인할 수 있었다.
5
20 10 35 30 7
7 35 // 결과값 출력