배열

yseo14·2025년 1월 9일

코딩테스트 대비

목록 보기
37/88

코딩테스트를 대비하며 배열을 다루는데 헷갈리는 것들을 정리하는 글입니다.

중복되는 값 제거하기

1. Stream 사용

int[] arr = {1, 1, 3, 4, 5, 6};
arr = Arrays.stream(arr).distinct().toArray;

// [1, 3, 4, 5, 6]

Arrays.stream()
배열을 스트림으로 변환한다.
스트림(Stream)은 데이터의 흐름을 추상화한 것으로, 원본 데이터를 변경하지 않고 데이터를 처리하거나 변환할 수 있는 기능을 제공한다.

distinct()
스트림에서 중복요소를 제거하는 메서드이다.
내부적으로 HashSet을 사용하여 중복을 제거한다.

toArray
스트림을 다시 배열로 변환하는 최종 연산이다.

2. Set 사용

int[] arr = {1, 1, 3, 4, 5, 6};
Set<Integer> intHashSet = new HashSet<>();

for (int i :  arr) {
	intHashSet.add(i);
}

int[] newArr = new int[intHashSet.size()];

int idx = 0;
for (int i : intHashSet) {
	newArr[idx++] = i;
}

// [1, 3, 4, 5, 6]

중복을 허용하지 않는 Set의 특징을 사용하여 배열의 중복을 제거하는 방법이다.
간결성 측면에서 Stream을 사용하는 1번 방법이 더 좋을 것 같다.!

배열 내 값 찾기

Arrays.binarySearch()

public static int binarySearch(int[] a, int key)

public static int binarySearch(int[] a, int fromIndex, int toIndex, int key)
  • 배열이 정렬된 상태여야한다.
  • 값을 찾지 못하면 음수를 반환한다. -(key가 들어갈 index )-1
	int[] arr = {1, 3, 5, 7, 9};
    int key = 4;

    int result = Arrays.binarySearch(arr, key);
        System.out.println("결과: " + result); // 출력: -3
profile
like the water flowing

0개의 댓글