Array: 최소, 최대

Young·2024년 2월 21일
post-thumbnail

Array의 최대 강점이자 동시에 약점은 offset을 이용해서 데이터 접근이 O(1)으로 이루어진다는 점입니다. 데이터가 메모리상에서 순차적으로 할당받기 때문에 가능한 결과입니다. 그래서 ReadOnly의 경우에는 아주 훌륭한 성능을 보이지만 중간에 데이터를 삽입 또는 삭제할 때 위에서 언급한 대로 데이터의 순차성을 유지하기 위해 전체적으로 데이터를 수정해야하기 때문에 해당 데이터가 많을 경우에 더욱 성능이 떨어지게 됩니다.

그래서 실제로는 픽셀, 센서, 통계 수치 데이터 등 대량의 데이터가형태가 일률적이고 ReadOnly로 분석 등에 활용할 경우 데이터베이스에 Array형태로 많이 저장하게 됩니다. 그리고 데이터 단위당 처리하는 속도도 비슷하기 때문에 일감을 나눠 병렬적으로 처리하기도 매우 용이합니다.

아래는 Array를 활용해 최소값, 최대값을 구하는 예시 코드입니다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;


public class Main {
    static public void main(String[] args) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        int numElements = Integer.parseInt(bf.readLine());

        int[] array = new int[numElements];
        StringTokenizer st = new StringTokenizer(bf.readLine(), " ");
        for (int i = 0; i < numElements; i++) {
            array[i] = Integer.parseInt(st.nextToken());
        }

        int[] arrayToMin = array.clone();
        int[] arrayToMax = array.clone();
        int min = Arrays.stream(arrayToMin).reduce(Math::min).getAsInt();
        int max = Arrays.stream(arrayToMax).reduce(Math::max).getAsInt();

        System.out.format("%d %d", min, max);
    }
}

문제 바로가기: http://boj.kr/3565416a70794f59bb3097a06f794c97

profile
생각을 영하게

0개의 댓글