[백준] 10818번 문제 - 최소,최대 - JAVA(자바)
문제
N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.
출력
첫째 줄에 주어진 정수 N개의 최솟값과 최댓값을 공백으로 구분해 출력한다.
처음 문제를 보고 arraylist를 이용해야하나 그냥 바로 배열을 만들어 사용해야하나 생각해보았다.
하지만 arraylist를 잘 사용할 줄 몰라 그냥 배열만 만들어 코드를 짜보자 라고 생각했다.
import java.util.Scanner;
public class b10818 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt(); //배열 길이
int i = 0;
int j = 0;
int[] arr = new int[a]; //배열 길이 설정
for (i = 0; i < a; i++) {
arr[i] = sc.nextInt(); // 배열 길이 만큼 정수값 받기
}
for (j = 0; j < a; j++) {
for (i = 0; i < a - j - 1; i++) {
if (arr[i] > arr[i + 1]) {
int temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp; // 15 - 20줄 까지 버블정렬 하여 오름차순으로 정리
}
}
}
System.out.print(arr[0] + " " + arr[a - 1]); // 최소 최대값 출력
}
}
우선 처음 배열을 만드는데 부터 기억이안나 배열 만드는법을 구글링 하였다. 그리고 배열의 길이 설정까지는 어렵지 않게 진행 하였고, 배열 길이 만큼 정수값 받기도 이렇게 하면 됬었나? 하며 코드를 쳐보니 되어서 다행이었다 생각했다.
이후 오름차순이던, 내림차순이던 배열안의 정수들을 크키별로 정렬을 해야하는데...
도저히 정렬하는 나중에 나오겠지만 (sort) 하는 법 / 메소드 가 기억이 안나 최근 정처기 실기시험 준비하며 C언어 문제를 풀었다가 버블정렬 문제가 나온기억이 있어 기억을 더듬어 버블정렬을 이용해 오름차순으로 정리해 보았다.
이 부분이 버블정렬 시키는 함수인데.. 생각나서 나름 뿌듯했다.
부푼기대를 안고 백준에 제출 해보았으나..
시간 초과가 된 내 눈을 믿지못하고 한번더 제출한 모습... ㅠㅠ
아마도 정렬메소드를 이용하면 금방 컴파일이 끝날것을 함수를 너무 길게 썼나보다..
그래서 그냥 정렬 하는 SORT를 찾아 답을 입력하였다..
정답은 아래에..
import java.util.Arrays;
import java.util.Scanner;
public class b10818_1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int[] arr = new int[a];
for (int i = 0; i < arr.length; i++) {
arr[i] = sc.nextInt();
}
Arrays.sort(arr);
System.out.println(arr[0] + " " + arr[a - 1]);
}
}
Arrays.sort(arr); 잘 외우고있자!