Java - 문제 미리보기

문제 2352

hard
다음 상황에서 더 적합한 선택과 그 이유는? 상황 A: 대용량 데이터에서 특정 인덱스의 요소를 자주 조회 상황 B: 리스트의 앞과 뒤에서 요소를 자주 추가/제거
A. A-LinkedList(빠른조회), B-ArrayList(빠른삽입)
B. A-ArrayList(인덱스접근), B-LinkedList(양끝조작)
C. A-LinkedList(메모리효율), B-ArrayList(안정성)
D. 둘 다 ArrayList가 더 적합함

정답: B

상황별 최적 선택 분석: 상황 A: 특정 인덱스 요소 자주 조회 → ArrayList가 적합 ArrayList 장점: ⦁ O(1) 시간에 인덱스 직접 접근 가능 ⦁ 배열 구조로 `arr[index]` 방식의 빠른 접근 ```java ArrayList list = new ArrayList<>(); String element = list.get(100); // 즉시 접근 O(1) ``` LinkedList 단점: ⦁ O(n) 시간 소요 (처음부터 순차 탐색) ⦁ 인덱스 100에 접근하려면 100번 링크를 따라가야 함 ```java LinkedList list = new LinkedList<>(); String element = list.get(100); // 순차 접근 O(n) ``` 상황 B: 앞/뒤에서 요소 자주 추가/제거 → LinkedList가 적합 LinkedList 장점: ⦁ 양끝 조작이 O(1) 시간에 가능 ⦁ 링크만 변경하면 되므로 매우 효율적 ```java LinkedList list = new LinkedList<>(); list.addFirst("Front"); // O(1) list.addLast("Back"); // O(1) list.removeFirst(); // O(1) list.removeLast(); // O(1) ``` ArrayList 단점: ⦁ 앞쪽 삽입/삭제 시 O(n) 시간 소요 ⦁ 모든 요소를 한 칸씩 이동해야 함 ```java ArrayList list = new ArrayList<>(); list.add(0, "Front"); // O(n) - 모든 요소 이동 ```

💡 학습 팁

이 문제를 포함한 Java 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.