public class License_CosParttern {
public static void main(String[] args) {
//[1] : 배열 선언 -> 숫자 배열
int[] target = {1, 3, 3, 2, 1, 1, 3, 0, 1, 2};
//[2] : 빈 배열 생성 -> 빈도 수 저장을 위한 배열
int maxArr = getMaxArr(target); // 배열 내 최대 숫자를 찾아서 빈 배열 크기를 결정
int[] ar = new int[maxArr + 1]; // 0부터 최대 숫까지 빈도 수를 저장할 배열
//[3] : 빈도 수 계산
for(int i = 0; i < target.length; i++) {
ar[target[i]]++;
}
//[4] : 출력
for(int i = 0; i < ar.length; i++) {
if(ar[i] > 0) {
System.out.println(i + " -> " + ar[i] + "회");
}
}
}
// 배열 내 최대 숫자를 찾는 함수
public static int getMaxArr(int[] arr) {
int max = arr[0];
for(int i = 1; i < arr.length; i++) {
if(arr[i] > max) {
max = arr[i];
}
}
return max;
}
}
0 -> 1회
1 -> 4회
2 -> 2회
3 -> 3회
1. 배열선언
빈도수를 측정할 숫자들을 담을 배열 target를 선언한다. 예를 들면, 예제와 같이 {1, 3, 3, 2, 1, 1, 3, 0, 1, 2} 와 같은 배열이 될수 있다.
2. getMaxArr(target) 함수, 빈도수 배열 생성
getMaxArr(target) 함수를 사용해 target 배열에서 가장 큰 숫자를 찾는다. 이 최대값은 빈도수를 저장할 배열 ar의 크기를 결정하는데 사용된다.
getMaxArr() 함수는 배열 내의 첫 번째 요소를 최대값으로 초기 설정하고, 배열의 나머지 요소들을 순회하면서 현재 요소의 값이 최대값 보다 큰 경우, 그 값을 최대값으로 업데이트한다.
최대값을 찾은 후 에는 그 값을 사용하여 빈도수를 저장할 ar를 생성한다. 배열의 크기는 최대값 + 1이며, 이는 배열 인덱스가 0부터 시작하기 때문이다.
3. 빈도수 계산
target 배열의 각 원소에 대해 반복하면서 해당 원소의 값에 해당하는 ar 배열의 위치에 빈도수를 정하는 것으로 이루어진다.
예를 들어, "taget 배열"에서 "2" 이라는 값을 만나면, 'ar[2]" 위치의 값을 1증가 시킨다. 이렇게 해서, "ar 배열"의 각 인덱스는 "target 배열"에서 그 인덱스 값의 빈도수를 저장하게 된다.
4. 결과 출력
마지막으로 "ar 배열"을 순회하면서 빈도수가 0보다 큰 원소에 대해 출력을 한다. 출력은 원소 값과 그에 해당하는 빈도수로 이루어진다.