Java - 문제 미리보기
문제 2352
hard
다음 상황에서 더 적합한 선택과 그 이유는?
상황 A: 대용량 데이터에서 특정 인덱스의 요소를 자주 조회
상황 B: 리스트의 앞과 뒤에서 요소를 자주 추가/제거
정답: 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 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.