강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

칼라똥님의 프로필 이미지
칼라똥

작성한 질문수

김영한의 실전 자바 - 중급 1편

문제와 풀이2

중급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인지 체크하고 있기 때문에 중복제거가 되지 않습니다 🙂

감사합니다.

칼라똥님의 프로필 이미지
칼라똥

작성한 질문수

질문하기