반응형
📖 문제
HashMap에 아이디(String)와 점수(Integer)가 저장되어 있습니다.
실행 결과와 같이 평균 점수, 최고 점수, 최고 점수를 받은 아이디를 출력하도록 코드를 작성해보세요.
📦 예제 클래스
MapExample.java
import java.util.HashMap;
import java.util.Map;
public class MapExample {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("blue", 96);
map.put("red", 86);
map.put("white", 92);
String name = null;
int maxScore = 0;
int totalScore = 0;
// 여기서부터 작성하세요.
}
}
📌 예제 정답
import java.util.HashMap;
import java.util.Map;
public class MapExample {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("blue", 96);
map.put("red", 86);
map.put("white", 92);
String name = null;
int maxScore = 0;
int totalScore = 0;
for (Map.Entry<String, Integer> entry : map.entrySet()) {
int score = entry.getValue();
totalScore += score;
if (score > maxScore) {
maxScore = score;
name = entry.getKey();
}
}
double avg = (double) totalScore / map.size();
System.out.println("평균 점수: " + (int) avg);
System.out.println("최고 점수: " + maxScore);
System.out.println("최고 점수를 받은 아이디: " + name);
}
}
💻 실행 결과
평균 점수: 91
최고 점수: 96
최고 점수를 받은 아이디: blue
💬 코드 설명
- Map<String, Integer>를 순회하여 점수를 누적(totalScore)하고, 최고 점수(maxScore)를 확인합니다.
- 최고 점수를 갱신할 때, 해당 점수를 가진 아이디(name)도 함께 저장합니다.
- 평균은 map.size()로 나눈 후 (int)로 소수점 아래를 제거하여 출력합니다.
💡 학습 포인트
- HashMap 순회 방법 숙지
Map.Entry를 사용하여 키와 값을 동시에 접근하는 방법을 연습합니다. - 총합, 최댓값, 조건 분기 로직 연습
루프를 돌면서 누적합과 동시에 최댓값 판별 및 갱신이 이루어지도록 합니다. - 정수 나눗셈과 실수 처리 구분하기
평균을 낼 때는 (double) 형변환을 먼저 해주어야 정확한 값이 나옵니다. - 최고 점수에 해당하는 키 추적
단순히 점수만 비교하는 것이 아닌, 그 점수를 가진 키도 함께 추적해야 하는 응용 문제입니다.
📌 마무리 정리
- 작성한 코드는 문제에서 요구하는 결과를 정확하게 출력하며, 모든 조건을 충족합니다.
- HashMap을 순회하면서 누적 연산과 비교 연산을 동시에 수행하는 구조를 연습할 수 있습니다.
- 이와 같은 문제는 학생 관리, 경쟁 순위 분석, 통계 처리 등에 실제로 많이 활용됩니다.
'Java > 연습문제' 카테고리의 다른 글
자바 연습문제 - 사용자 정의 함수형 인터페이스 Function 구현 (0) | 2025.05.22 |
---|---|
자바 연습문제 - 람다식을 이용한 Thread 실행 코드 작성 (1) | 2025.05.22 |
자바 연습문제 - Comparator를 이용한 TreeSet 정렬 기준 지정 (0) | 2025.05.22 |
자바 연습문제 - TreeSet과 Comparable을 이용한 자동 정렬 구현 (0) | 2025.05.22 |
자바 연습문제 - HashSet과 equals/hashCode 오버라이딩을 활용한 중복 방지 (0) | 2025.05.22 |
자바 연습문제 - List 컬렉션을 이용한 게시글 데이터 반환 구현 (0) | 2025.05.22 |