Deve.haeri

[Java/연습문제] 빈도수 그래프 출력하기 본문

Quiz/04.Array

[Java/연습문제] 빈도수 그래프 출력하기

hhaeri 2020. 10. 31. 20:20

1. 문제 설명

 - 0~9 사이 난수를 발생하여, 생성 횟수만큼 그래프를 출력한다.

 

2. 소스 코드

package ex03_array_quiz;

public class Quiz08 {

	public static void main(String[] args) {
		//문제. 0에서 9사이 난수를 100개 생성하고, 각 숫자들의 생성 횟수(빈도수)를 그래프화 하여 출력하시오.
		
		//실행 예)
		// 0 : ##### 5
		// 1 : ### 3
		
		//100개 랜덤 저장 a배열
		// | 5 | 4 | 0 | 7 |
		// a[0] ~ a[99] : 0~9
		
		// 10개 요소를 가지는 counter 배열
		// counter[0] : 7  (0이 7개)
		// counter[1] : 5 (1이 5개)
		
		
		int [] a = new int[100];
		int [] counter = new int[10];
		
		//100개 랜덤 생성
		for(int i=0; i<a.length; i++) {
			a[i] = (int)(Math.random()*10);
			counter[a[i]] ++;
		}
		//counter 배열에 인덱스 a[i] 요소를 증가
		for (int i =0 ; i < counter.length; i ++) {
			String graph = "";
			//counter[i] 만큼 # 이어 붙이기 반복
			for(int j=0; j<counter[i]; j++) {
				graph +="#";
			}
			System.out.println(i + " : " + graph+ " " +counter[i]);
		}
		
	}

}

3. 문제 해결 방법

 1) 100개의 난수가 저장될 배열 a와 생성 된 난수의 횟수를 저장할 배열 counter를 생성한다.

 2) a배열의 크기 (100) 만큼 난수를 생성한다.

 3) 같은 수의 난수가 발생하면 그 수를 가진 counter배열 인덱스의 수를 증가한다.

  ex) 난수 3 발생 -> counter[3] 값 증가 -> 난수 3 또 나옴 -> counter[3] 증가

 4) counter 배열의 각 인덱스에 저장된 수만큼 #을 생성한다.

  - 처음 string을 초기화 하고, 배열의 크기만큼 for문을 사용해서 #을 저장한다.

 

4. 결과

Comments