본문 바로가기

TIL/Java

Java 로또만들기 정답버전

반응형

처음에는 변하지 않을 값들을 final를 통해 지정해 놓는다

로또번호가 나올수 있는 것을 LOTTO_SIZE = 45

보너스 번호는 몇번째에 나오게 할 것인가를 BOUNUS_INDEX = 4

그리고 HashSet 배열을 만들어서 lotto로 지정하고 (중복 없이 값을 넣기 위해 HashSet 사용)

인자값을 int 형 변수 len으로 받는다

이렇게 메서드를 만들면, 로또 당첨번호를 무작위로 중복 없이 뽑을 때랑

내가 로또번호를 추첨할때랑 길이만 다르게 하면 되기 때문에 매머드 하나로 두 가지를 만들 수 있다

일단, 당첨번호를 생성하는데

while문을 통하여 설정한 길이 len 과 lotto.size()

즉, 로또 번호의 총 길이와 설정한 길이 같을 때까지 반복해서 값을 넣는다는 뜻

그리고, 제일 중요한 보너스 번호의 위치를 확인하기 위해서

가정문을 통하여

만약 로또 번호가 7개이고, 로또 사이즈가 4개가 됐을 때 (lotto.size() == BONUS_INDEX)

그때 추가하는 값은 보너스볼이다.

그렇게 보너스볼이 무엇인지 판별한 뒤에 로또 당첨번호를 리턴해준다

그 다음에는 test 메서드를 만들고

처음에는 로또당첨번호를 뽑고

그 후에 추첨번호를 뽑는 로직을 짜면 되는데,

checkList 라는 배열 리스트를 만들고 이제 그걸 이용해서 Set형식인 (당첨번호, 뽑은 번호) 두 가지 번호를 비교해줄 거다

checkList에 당첨번호를 다 넣고 뽑은번호와의 removeAll을 해서 겹치는 부분은 전부 다 없애주는 형식

그렇게 없앴는데 사이즈가 1이 남았다는 것은 당첨됐다는 얘기다

쉽게 말해서, 로또 당첨 번호는 7개 - 뽑은 번호 6개 = 1개

1등 아니면 2등이라는 소리.

이제 마지막으로 가정문을 사용하여, get으로 첫 번째 인덱스를 가져왔을 때 그것이 보너스라면

즉, 보너스 번호 빼고 6개씩 다 같은 값이라면 1등을 출력

아니라면 2등을 출력해주면 된다

그리고 로또번호를 뽑을 때마다 카운트 횟수를 늘려주고,

끝날 때마다 clear()를 통해서 남아있는 값들을 모두 지워준다

그리고 main에서 test 메서드를 불러주면 끝!

반응형

'TIL > Java' 카테고리의 다른 글

Java 섯다 게임 구현하기  (1) 2021.08.03
Java Yacht dice game 구현하기  (0) 2021.08.03
Java 로또만들기 - (오류발견 : 보너스번호관련)  (0) 2021.08.03
Basic Algorithm 14th  (0) 2021.08.03
Basic Algorithm 13th  (0) 2021.08.03