본문 바로가기
프로그래밍/백준 알고리즘 코드

백준 10818번 java 최소, 최대 (1차원 배열)

by 졸린이 2020. 9. 3.
반응형

백준 10818번 java 최소, 최대 (1차원 배열)


배열크기를 입력하고 for문으로 배열 원소를 입력하고 비교하기만 하면 되는 간단한 프로그램이다.

 

아래 코드는 틀렸습니다가 나와서 맨 아래 코드를 보시면 됩니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.util.Scanner;
 
//baekjoon_10818
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        
        int ar[] = new int[n];
        int min, max;
        min = Integer.MAX_VALUE;
        max = Integer.MIN_VALUE;
        for(int i=0; i<n; i++) {
            ar[i] = sc.nextInt();
            if(min > ar[i])
                min = ar[i];
            else if(max < ar[i])
                max = ar[i];
        }
        System.out.println(min + " " + max); 
    }
}
cs

우선 결론부터 얘기하면 이 코드로 제출했다가 '틀렸습니다.'를 받았다.

7행에서 n값을 입력하고 min은 MAX_VALUE로 max는 MIN_VALUE로 초기화한다.

13행부터 for문에서 배열원소를 입력하고 min보다 입력값이 더 작으면 min에 방급입력값을 저장한다.

처음 비교에서는 min이 MAX_VALUE로 초기화했기 때문에 바로 값이 저장된다.

마찬가지로 17행에서 max값도 비교하고 마지막 배열원소까지 입력하고 비교가 마치고 출력한다.

근데 이게 틀렸대... 왜지?? 아무튼 이거는 틀렸다니 냅두고 다른 코드를 보자.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.util.Scanner;
 
public class Main{
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        
        int arr[] = new int[n];
        for(int i=0; i<n; i++) {
            arr[i] = sc.nextInt();
        }
        int min =0, max =0;
        for(int i=1; i<n; i++) {
            if(arr[i] < arr[min])
                min = i;
            else if(arr[i] > arr[max])
                max = i;
        }
        System.out.println(arr[min]+" "+ arr[max]);
        
    }
}
cs

 

이거는 아무튼 뭐 정답이 됐다.

line8 :  배열선언을 한다.

line9 : for문으로 배열 초기화.

line12 : min, max를 선언하고 0으로 초기화.

line13 : 배열 원소는 0부터 지만 min, max가 0이므로 1부터 비교한다.

line14 : min(처음에는0번째)원소보다 i(그 다음 원소)번째 원소가 더 작으면 min에 i값을 준다.

max값도 마찬가지로 비교.

line19 : 출력.

 

후~

 

 

 

반응형

댓글