Java/연습문제

자바 연습문제 - HashMap을 이용한 점수 평균 및 최고 점수 계산

코딩하는냥이 2025. 5. 22. 14:13
반응형

📖 문제

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)로 소수점 아래를 제거하여 출력합니다.

💡 학습 포인트

  1. HashMap 순회 방법 숙지
    Map.Entry를 사용하여 키와 값을 동시에 접근하는 방법을 연습합니다.
  2. 총합, 최댓값, 조건 분기 로직 연습
    루프를 돌면서 누적합과 동시에 최댓값 판별 및 갱신이 이루어지도록 합니다.
  3. 정수 나눗셈과 실수 처리 구분하기
    평균을 낼 때는 (double) 형변환을 먼저 해주어야 정확한 값이 나옵니다.
  4. 최고 점수에 해당하는 키 추적
    단순히 점수만 비교하는 것이 아닌, 그 점수를 가진 키도 함께 추적해야 하는 응용 문제입니다.

📌 마무리 정리

  • 작성한 코드는 문제에서 요구하는 결과를 정확하게 출력하며, 모든 조건을 충족합니다.
  • HashMap을 순회하면서 누적 연산과 비교 연산을 동시에 수행하는 구조를 연습할 수 있습니다.
  • 이와 같은 문제는 학생 관리, 경쟁 순위 분석, 통계 처리 등에 실제로 많이 활용됩니다.