자바 코딩 질문드립니다
조회수 848회
for(int p = 0; p < index.length;p++)
{
int count=0;
for(int q = p+1; q < index.length; q++) {
if (Arrays.equals(index[p], index[q]))
{
count = count +1;
}
}
if (count==7)
{
for (int i = 0; i < 6; i++) // 당첨번호 출력
{
System.out.println(index[p][i]);
}
System.out.println("중복 횟수"+count); //중복횟수가 7이 아닌 5,6이 같이 나옵니다
}
}
index배열의 요소를 서로 비교하다가 7번 중복인 요소를 출력하려고 하는데 중복횟수가 7이 아닌 다른것도 출력이 되는데 어디가 잘못 된건지 잘 모르겠습니다. 형님들 한번 봐주십시요.
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
단순 2차원 배열에서 중복을 확인하는데는 많은 방법이 있겠지만 Map을 활용하는 것도 좋을 것 같습니다.
import java.util.HashMap; import java.util.Map; import java.util.Random; public class Main { private static int index[][] = new int[20][20]; private static Map<Integer, Integer> duplicate; public static void main(String[] args) { duplicate = new HashMap<>(); for(int i=0; i<index.length; i++) { for(int j=0; j<index[i].length; j++) { index[i][j] = new Random().nextInt(100); } } for(int i=0; i<index.length; i++) { for(int j=0; j<index[i].length; j++) { Integer value = duplicate.get(index[i][j]); if(value==null) value = 0; duplicate.put(index[i][j], value+1); } } for(Map.Entry<Integer, Integer> entry : duplicate.entrySet()) { if(entry.getValue()==7) System.out.println(entry.getKey() + " : " + entry.getValue() + "번 중복!"); } } }
100까지의 난수를 생성해서 중복을 계산하는 코드입니다. key값을 숫자로, value 값을 중복횟수로 잡으면 7번 중복되는 숫자를 쉽게 뽑아낼 수 있습니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
- 알겠습니다. 제가 사용법을 잘 몰라서 실수했네요. 제 질문은 갯수가 많아도 상관없나요? 알 수 없는 사용자 2018.8.20 15:15
- 직접 해보시면 되지 않을까요? 시간이 더 걸릴 뿐이겠죠? 알 수 없는 사용자 2018.8.20 15:17
- 배열 갯수가 많아지니까 아웃오브힙이 나오더라구요(2천만개). 그래서 천만개로 해보고 있는데 괜찮나 해서요 알 수 없는 사용자 2018.8.20 15:24
- 메모리에 제한이 있으니 어느정도까지는 되겠지만 한계가 있긴 할 것 같네요. 알 수 없는 사용자 2018.8.20 15:25
-
댓글 입력