Java - 문제 미리보기

문제 2426

hard
다음 세 가지 HashMap 순회 방법 중 가장 비효율적인 것은 무엇일까요?
```java
// 방법 A
for (String key : map.keySet()) {
String value = map.get(key);
System.out.println(key + ": " + value);
}

// 방법 B
for (String value : map.values()) {
System.out.println(value);
}

// 방법 C
for (String key : map.keySet()) {
System.out.println(key);
}
```
A. 방법 A
B. 방법 B
C. 방법 C
D. 모두 동일한 효율성

정답: A



⦁ 방법 A가 가장 비효율적입니다
⦁ `keySet()`으로 키를 가져온 후, 각 키마다 `get(key)`를 다시 호출해야 합니다
⦁ 이는 HashMap을 두 번 접근하는 것과 같습니다 (O(n) + O(n) = O(2n))

⦁ 방법 B와 C는 상대적으로 효율적입니다
⦁ 방법 B: `values()`로 한 번에 모든 값을 가져와서 순회 (O(n))
⦁ 방법 C: `keySet()`으로 한 번에 모든 키를 가져와서 순회 (O(n))

⦁ 더 효율적인 대안: `entrySet()` 사용
```java
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
```

💡 학습 팁

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