반응형

 

문제

 

package kr.or.ddit.homework;

public class HomeWork19 {
	public static void main(String[] args) {
		HomeWork19 hw = new HomeWork19();
		hw.process();
	}
	
	public void process() {
		/*
		 * 주사위 히스토 그램을 배열 사용 x.
		 * 리스트 혹은 맵으로 구현해보기.
		 */
	}
}

 

 

 

정답

 

package kr.or.ddit.homework;

import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.Scanner;

public class HomeWork19 {
	public static void main(String[] args) {
		HomeWork19 hw = new HomeWork19();
		hw.process();
	}

	private String integer;
	
	public void process() {
		/*
		 * 주사위 히스토 그램을 배열 사용 x.
		 * 리스트 혹은 맵으로 구현해보기.
		 */
		
		Scanner sc = new Scanner(System.in);
		
		System.out.println("주사위를 몇 번 던지겠습니까?");
		int number = sc.nextInt();
		System.out.println();
		Map<Integer, Integer> resultMap = rollDice(number);
		printHistoGram(number);
	}
	
	public int oneDice() {
		return new Random().nextInt(6)+1;
	}
	
	public int throwTwoDice() {
		return oneDice() + oneDice();
	}
	
	public Map<Integer, Integer> rollDice(int num) {
		Map<Integer, Integer> resultMap = new HashMap();
		
		for(int i=0; i<num; i++) {
			int dice = throwTwoDice();
			int count = 1;
			
			if(resultMap.containsKey(dice)) {
				count += resultMap.get(dice);
			}
			resultMap.put(dice, count);
		}
		return resultMap;
	}
	
	// 프린트
		public void printHistoGram(int num) {
			Map<Integer, Integer> result = rollDice(num);
			for(int i=2; i<12; i++) {
				int count = result.get(i);
				System.out.print(i + "\t");
				for(int j=0; j<count*100/num; j++) {
					System.out.print("*");
				}
				System.out.println();
			}
		}
}

 

결과 화면

 

 

반응형