https://www.acmicpc.net/problem/10818
10818번: 최소, 최대
첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.
www.acmicpc.net
주의점
- N개의 정수가 공백으로 구분 후 입력됨
풀이
1. Scanner + Array (배열)
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int N = in.nextInt();
int[] arr = new int[N];
for(int i = 0; i < N; i++) {
arr[i] = in.nextInt();
}
in.close();
Arrays.sort(arr); //오름차순 정렬
System.out.print(arr[0] + " " + arr[N - 1]);
}
}
2. BufferedReader + StringTokenizer + Array
import java.util.Arrays;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine()); //공백도 함께 입력됨
StringTokenizer st = new StringTokenizer(br.readLine()," "); //공백 단위로 분리
int idx = 0;
int[] arr = new int[N];
//StringToken에 있는 모든 토큰이 없어질 때까지 배열에 담기
//String.hasMoreTokens(): StringTokenizer에 토큰 남아있으면 true / 없으면 false
while(st.hasMoreTokens()) {
//String.nextToken(): return String
arr[idx] = Integer.parseInt(st.nextToken()); //String➡int
idx++;
}
Arrays.sort(arr);
System.out.print(arr[0] + " " + arr[N - 1]);
}
}
3. BufferedReader
- Array 사용 X + 입력 받은 문자 즉시 비교 ➡ 시간 및 메모리 절약
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Integer.parseInt(br.readLine()); //첫 번째 줄
StringTokenizer st = new StringTokenizer(br.readLine()," "); //두 번째 줄
int max = -1000001; //가장 작은 수 ➡ 점점 크게
int min = 1000001; //가장 큰 수 ➡ 점점 작게
while(st.hasMoreTokens()) {
int val = Integer.parseInt(st.nextToken());
if(val > max) { //가장 작은 수인 max보다 크면
max = val; //max값 변경9
}
if(val < min) { //가장 큰 수인 min보다 작으면
min = val; //min값 변경
}
}
System.out.println(min + " " + max);
}
}
성능
- BufferedReader
- BufferedReader + StringTokenizer + Array
- Scanner + Array
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준] 3052번 : 나머지 - Java (0) | 2022.03.03 |
---|---|
[백준] 2577번 : 숫자의 개수 - Java (0) | 2022.03.03 |
[백준] 1110번 : 더하기 사이클 - Java (0) | 2022.02.28 |
[백준] 10951번 : A + B - 4 - Java (0) | 2022.02.23 |
[백준] 10952번 : A + B - 5 - Java (0) | 2022.02.23 |
댓글