인프런 커뮤니티 질문&답변
중급1편, 래퍼클래스 문제와풀이2 로또제너레이터 질문
작성
·
25
0
[질문 내용]
여기에 질문 내용을 남겨주세요.
{
private final Random random = new Random();
private int[] lottoNum;
private int count;
public int[] generate() {
lottoNum = new int[6];
count = 0;
while (count < 6) {
//1-45 숫자 생성
int num = random.nextInt(45) + 1;
//중복 제거 필요
if (isUnique(num, count)) {
lottoNum[count] = num;
count++;
}
}
return lottoNum;
}
public boolean isUnique(int num, int count) {
if(lottoNum[count]==num){
return false;
} else {return true;}
}
}
isUnique 메서드를 이렇게 작성하면 중복제거가 안 되는 이유가 뭘까요
답변 1
0
안녕하세요. 칼라똥님, 공식 서포터즈 y2gcoder입니다.
칼라똥님이 작성해주신 중복확인 메서드에서는 뽑은 로또 배열 전체에서 중복확인을 하고 있는 것이 아니라 이제 넣으려고 하는 로또 번호 칸에 해당 로또 번호가 있는지 체크하고 있습니다 🙂
예를 들자면
로또 번호가 [1, 2, 3, 4, x, x] 이렇게 들어가 있다고 가정하고 이제 5번째 공을 뽑았는데 4 가 나왔습니다
[1, 2, 3, 4, x, x] 배열 전체를 체크해서 4가 있는지 체크해야겠지만 만들어진 isUnique 함수를 사용하면 [1, 2, 3, 4, x, x] 중 5번째 자리(첫번째 x 자리)가 4인지 체크하고 있기 때문에 중복제거가 되지 않습니다 🙂
감사합니다.





