안드로이드 개발 질문/답변
(글 수 45,052)
int arr[]= new int[100];
int i,j,k;
int x;
int count=0;
System.out.println("-------------------------------------------------------");
for(i=0;i<100;i++){
x=(int)((Math.random()*25)+1);
arr[i]=x;
for (j=0;j<i;j++){
if(arr[i] == arr[j]){ // 생성된 수와 이전에 저장된 수를 비교
count++;
System.out.println("j : " +j+ count);
break;
}else{
System.out.println(arr[i]);
}
}
}
//* 오름차순으로 정렬 */
for(i=0; i<100; i++){ // 정렬 조건
for(j=0; j<=i; j++){
if(arr[i]<=arr[j]){
k=arr[i];
arr[i]=arr[j];
arr[j]=k;
}
}
}
//* 최종 출력 */
// for(i=0; i<100; i++){
// System.out.println(arr[i]);
// }
}
}
이상태입니다.
이부분에서
for (j=0;j<i;j++){
if(arr[i] == arr[j]){ // 생성된 수와 이전에 저장된 수를 비교
count++;
System.out.println("j : " +j+ count);
break;
}else{
System.out.println(arr[i]);
}
}
중복체크인대
여기서 1~25까지 생성하면
숫자들을
1 = 중복몇번
2 = 중복몇번
3 = 중복몇번
이런식으로 뿌려주고싶은대 ... ㄱ- 로직이 떠오르질않네요 ㄷㄷ




여러가지 방법이 있는데요 본문에서 소팅하셨으니까 값이 달라지는 위치까지 카운트하셔도 되구요
(소팅이 필요하다면... 근데 자바 컬렉션에 소팅하는 함수가 있어요. Collections.sort(...) 찾아보세요.
소팅하실 필요가 없다면... .예를 들어 값의 범위가 1~25까지라면
int[] count = new int[25] 하신 다음에
발생한 (난수 값 - 1)을 index로 해서 count 배열의 해당 인덱스 값을 하나씩 증가시키세요.
즉, 값이 5가 나왔으면 count[4] ++;
값이 25가 나왔으면 count[24] ++;
이렇게 하면 (i+1) 숫자의 개수는 count[i] 입니다.
히스토그램 만들 때 많이 쓰는 방법이예요.