[ 목차 ]
📢 문제 출처
⏰ 문제 설명
- N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오.
⏰ 입출력 예시
⏰ 풀이
💡 1번 풀이 (feat. ArrayList)
import java.util.*;
public class BOJ_10818 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
ArrayList<Integer> arrlist = new ArrayList<Integer>();
int N = sc.nextInt();
//값을 ArrayList에 넣는다.
for (int i = 0; i < N; i++) {
int j = sc.nextInt();
arrlist.add(j); //값 대입
}
System.out.println("== ArrayList 정렬 전 ==");
System.out.println("ArrayList = " + arrlist);
//Array Sorting
arrlist.sort(Comparator.naturalOrder()); //오름차순 정렬
System.out.println("== ArrayList 정렬 후 ==");
System.out.println("ArrayList = " + arrlist);
System.out.println("== ArrayList 최소, 최대값 ==");
System.out.println(arrlist.get(0) +" " + arrlist.get(arrlist.size()-1));
}
}
💡 2번 풀이 (feat. Arrays.sort)
import java.util.*;
public class BOJ_10818 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
ArrayList<Integer> arrlist = new ArrayList<Integer>();
int N = sc.nextInt();
int[] iArr = new int[N]; //배열 갯수 선언
//값을 ArrayList에 넣는다.
for (int i = 0; i < N; i++) {
int j = sc.nextInt();
iArr[i] = j; //값 대입
}
System.out.println("== 배열(1) 정렬 전 ==");
System.out.println("배열 = " + Arrays.toString(iArr));
System.out.println("== 배열(1) 정렬 후 ==");
Arrays.sort(iArr); //배열 함수
System.out.println("배열 = " + Arrays.toString(iArr));
System.out.println("== 배열(1) 최소, 최대값 ==");
System.out.println(iArr[0] + " " + iArr[iArr.length - 1]);
}
}
- Arrays.sort 사용 시에는 시간 복잡도가 증가되는 것을 알아둬야한다.
💡3번 풀이 (feat. 배열 값 비교)
import java.util.*;
public class BOJ_10818 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
ArrayList<Integer> arrlist = new ArrayList<Integer>();
int N = sc.nextInt();
int[] iArr2 = new int[N]; //배열 갯수 선언
//값을 ArrayList에 넣는다.
for (int i = 0; i < N; i++) {
int j = sc.nextInt();
iArr2[i] = j; //값 대입
}
System.out.println("== 배열(2) 정렬 전 ==");
System.out.println("배열 = " + Arrays.toString(iArr2));
//min과 max에 작은 값을 대입
int min = iArr2[0];
int max = iArr2[0];
//배열의 갯수만큼 반복
//min값과 max 값보다 작거나 크면 값을 min과 max에 대입
//최종 값은 배열에서 가장 작은 값은 min, 큰 값은 max으로 출력
for (int num : iArr2) {
if (num < min) {
min = num;
} else if (num > max) {
max = num;
}
}
System.out.println("== 배열(2) 최소, 최대값 ==");
System.out.println(min + " " + max);
}
}
💡4번 풀이 (feat. Arrays.stream)
import java.util.*;
public class BOJ_10818 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
ArrayList<Integer> arrlist = new ArrayList<Integer>();
int N = sc.nextInt();
int[] iArr = new int[N]; //배열 갯수 선언
//값을 ArrayList에 넣는다.
for (int i = 0; i < N; i++) {
int j = sc.nextInt();
iArr[i] = j; //값 대입
}
int min = Arrays.stream(iArr).min().getAsInt();
int max = Arrays.stream(iArr).max().getAsInt();
System.out.println("== Arrays.stream() 최소, 최대값 ==");
System.out.println(min + " " + max);
}
}
반응형
'코딩테스트 > 백준' 카테고리의 다른 글
[Java][백준 2743번] : 단어 길이 재기 (0) | 2023.08.10 |
---|---|
[Java][백준 1021번] : 회전하는 큐 (0) | 2023.08.09 |
[Java][백준 25556번] : 포스택 (0) | 2023.08.08 |
댓글