본문 바로가기
Baekjoon 자바 코드/1차원 배열

[백준] 10818번 최소, 최대 풀이 코드 (Java 자바)

by 망댕이 2024. 7. 22.
반응형

 

접근 방법)

 

배열을 이용하지 않고 for문 안에서 단순한 크기 비교를 통해 문제를 풀 수 있다.하지만 배열 파트인 만큼 1차원 배열을 사용하여 문제를 풀어보도록 하자.

 

크기가 N인 1차원 배열을 생성한 후 두 번째 줄에 입력받은 값들을 모두 배열 안에 넣어준다.그리고 배열 안의 값들을 하나씩 비교하면서 앞 값과 비교했을 때 크면 max, 작으면 min으로 할당하여 N-1번 배열까지 반복작업을 하면 최대, 최솟값을 구할 수 있다.

 

 

▷ 1차원 배열 생성

 

1차원 배열 생성은 for문을 이용하여 쉽게 나타낼 수 있다.

int[] g = new int[N];

for(int i = 0; i < N; i++){ 
    int a = s.nextInt(); // Scanner s = new Scanner(System.in)
    g[i] = a;
}

 

배열 [0]부터 배열 [N-1] 번까지 값을 넣어주는 반복 작업으로 1차원 배열을 생성할 수 있다.

 

▷ max, min를 구하기 위한 배열 안에서 값들의 크기 비교

int max = g[0];
int min = g[0];
        
for(int j= 0; j < n; j++){
    if(g[j] < min){
        min = g[j];
    }
    if(g[j] > max){
        max = g[j];
    }
}

 

앞 값과 비교하여 클 때는 max에 할당, 작을 때는 min에 할당하게 코드를 작성하여 배열 크기만큼 반복을 돌리게 되면 배열안의 최댓값과 최솟값을 구할 수 있다.


정답 코드 1)

import java.util.Scanner;

class Main{
    public static void main(String[] args){
        Scanner s = new Scanner(System.in);
        int n = s.nextInt();
        int[] g = new int[n]; // 1차원 배열 생성
        
        for(int i = 0; i < n; i++){ // 배열 안에 값들 집어넣기
            int x = s.nextInt();
            g[i] = x;
        }
        int max = g[0];
        int min = g[0];
        
        for(int j= 0; j < n; j++){
            if(g[j] < min){ // 최솟값 구하는 방법
                min = g[j];
            }
            if(g[j] > max){ // 최댓값 구하는 방법
                max = g[j];
            }
        }
        System.out.print(min+" "+max);
    }
}

 

앞써 1차원 배열을 이용하여 배열 안의 값들 비교를 통하여 문제를 해결하는 방법이다.

 

정답 코드 2)

import java.util.Scanner;

class Main{
    public static void main(String[] args){
        Scanner s = new Scanner(System.in);
        int n = s.nextInt();
        int max = -1000000;
        int min = 1000000;
        
        for(int i= 0; i < n; i++){
            int a = s.nextInt();
            if(a < min){
                min = a;
            }
            if(a > max){
                max = a;
            }
        }
        System.out.print(min+" "+max);
    }
}

 

배열을 이용하여 풀지 않은 방법이다.

문제에서 주어진 배열 안의 값의 범위는 -1,000,000 ~ 1,000,000이다.

그러기 때문에 max가 될 수 있는 최솟값인 -1,000,000과 min가 될 수 있는 최댓값인 1,000,000을 초기값으로 설정한 후 첫 번째 줄에서 입력받은 N만큼 반복문을 실행하여 값들을 비교를 통해 최댓값과 최솟값을 구해낼 수 있다.

반응형