ArrayList

journey·2023년 12월 26일
0

코테를 풀며 아래의 문제를 다음과 같은 방법으로 구현했었다.

n의 배수

정수 n과 정수 배열 numlist가 매개변수로 주어질 때, numlist에서 n의 배수가 아닌 수들을 제거한 배열을 return하도록 solution 함수를 완성해주세요.

class Solution {
    public int[] solution(int n, int[] numlist) {
        
        // 이 부분에서 배열의 크기를 구하기 위해 두 번의 순회가 필요하므로 비효율적
        // 이 문제를 해결하기 위해 배열 대신 ArrayList 사용
        int multiples = 0;
        for (int i = 0; i < numlist.length; i++) {
            if (numlist[i] % n == 0) {
                multiples++;
            }
        }
        
        int index = 0;
        int[] answer = new int[multiples];
        for (int j = 0; j < numlist.length; j++) {
            if (numlist[j] % n == 0) {
                answer[index] = numlist[j];
                index++;
            }
        }
        
        return answer;
    }
} 

다른 방법이 더 좋다.
그게 ArrayList!

ArrayList

  • arrayList란 배열과 유사하지만 크기가 동적으로 변할 수 있으며 다양한 메소드를 제공하여 배열 관리를 더욱 쉽다.

  • 요소의 추가, 삭제, 읽기 등이 가능하다.

  • 크기가 자동으로 조정되며, 제네릭을 사용하여 다양한 타입의 객체를 저장할 수 있다.

ArrayList의 주요 특징

동적 크기: ArrayList는 필요에 따라 크기가 자동으로 조정됩니다. 즉, 요소를 추가하거나 제거할 때마다 ArrayList는 자동으로 크기를 늘리거나 줄입니다.

타입 안전성: ArrayList는 제네릭을 사용하여 특정 타입의 객체만 저장할 수 있습니다. 예를 들어, ArrayList는 정수만 저장할 수 있습니다.

랜덤 액세스: ArrayList는 내부적으로 배열을 사용하기 때문에 인덱스를 통한 빠른 요소 접근이 가능합니다.

순서 유지: ArrayList에 추가된 요소는 삽입된 순서를 유지합니다.

ArrayList의 사용예시

import java.util.ArrayList;

public class Main {
  public static void main(String[] args) {
      // Integer 타입의 ArrayList를 생성합니다.
      ArrayList<Integer> numbers = new ArrayList<Integer>();

      // 요소 추가
      numbers.add(1);
      numbers.add(2);
      numbers.add(3);

      // 특정 인덱스에 요소 추가
      numbers.add(1, 4); // 인덱스 1에 4를 삽입

      // 요소 접근
      int number = numbers.get(2); // 인덱스 2의 요소를 가져옴

      // 요소 제거
      numbers.remove(Integer.valueOf(2)); // 요소 2를 제거
      numbers.remove(0); // 인덱스 0의 요소를 제거

      // ArrayList의 크기
      int size = numbers.size();

      // 모든 요소 출력
      for (int num : numbers) {
          System.out.print(num + " ");
      }
  }
}

ArrayList 방식으로 변경해서 푼 방법

class Solution {
  public int[] solution(int n, int[] numlist) {

      int multiples = 0;
      for (int i = 0; i < numlist.length; i++) {
          if (numlist[i] % n == 0) {
              multiples++;
          }
      }

      int index = 0;
      int[] answer = new int[multiples];
      for (int j = 0; j < numlist.length; j++) {
          if (numlist[j] % n == 0) {
              answer[index] = numlist[j];
              index++;
          }
      }

      return answer;
  }
}
profile
백엔드 개발 여정

0개의 댓글

관련 채용 정보