반응형
문제
로또는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다.
아래는 로또 순위를 정하는 방식입니다.
순위 | 당첨 내용 |
1 | 6개 번호 일치 |
2 | 5개 번호 일치 |
3 | 4개 번호 일치 |
4 | 3개 번호 일치 |
5 | 2개 번호 일치 |
6 | 그 외 |
로또의 일부 번호를 알수 없을 때 당점 가능한 최고 순위와 최저 순위를 반환하는 method를 구현하시오.
- 알수 없는 번호는 0이다.
- 순서와 상관없이 구매한 로또에 당첨 번호와 일치하는 번호가 있으면 맞힌걸로 인정한다.
- lottos는 길이가 6인 정수 배열이다.
- lottos의 원소는 0이상 45이하이다.
- lottos에 0을 제외한 다른 숫자들은 2개 이상 담겨있지 않는다.
- win_nums는 길이가 6인 정수 배열이다.
- win_nums의 모든 원소는 1이상 45이하인 정수다.
- win_nums에 같은 숫자가 2개 이상 담겨있지 않는다.
- win_nums의 원소들은 정렬되어 있지 않을 수 도 있다.
▶ 입출력 예
lottos | win_nums | result |
[44, 1, 0, 0 , 31, 25} | [31, 10, 45, 1, 6, 19] | [3, 5] |
[0, 0, 0, 0, 0, 0] | [38, 19, 20, 40, 15, 25] | [1, 6] |
[45, 4, 35, 20, 3, 9] | [20, 9, 3, 45, 4, 35] | [1, 1] |
해법
본 문제는 컬렉션 내의 중복의 요소들을 쉽게 제거 할 수 있는 장점을 가진 HashSet을 이용하여 해결합니다.
- HashSet 정의 및 데이터 입력
- 로또 번호중 0의 개수 확인.
- 당첨된 로또 번호의 개수 확인.
- 등수를 반환할 method 정의.
- 0의 개수와 당첨된 로또 번호의 개수를 참고하여 최고 등수, 최저 등수 반환.
import java.util.*;
public static int[] soulution(int[] lottos, int[] win_nums){
// 답.
int[] answer = new int[2];
// set : 데이터의 중복 저장을 허용하지 않는다.
HashSet<Integer> lottoNum = new HashSet<Integer>();
HashSet<Integer> win_num = new HashSet<Integer>();
int checkCnt = 0; //0을 제외한 로또 번호가 맞은 횟수
int zeroCnt = 0; // 0의 횟수
// lottoNum에 lottos의 번호들을 입력.
for(int i : lottos){
lottoNum.add(i);
if(i == 0){ // 0이 있는 경우
zeroCnt += 1;
}
}
// win_num에 win_nums를 입력.
for(int i : win_nums){
win_num.add(i);
}
// 0을 제외한 로또 번호가 맞은 횟수 검사.
lottoNum.retainAll(win_num);
checkCnt = lottoNum.size();
int maxLank = lankCheck(checkCnt + zeroCnt); // 가장 높은 등수
int minLank = lankCheck(checkCnt); //가장 낮은 등수
answer[0] = maxLank;
answer[1] = minLank;
return answer;
}
public static int lankCheck(int num){
int lank;
if(num == 2){
lank = 5;
}
else if(num == 3){
lank = 4;
}
else if(num == 4){
lank = 3;
}
else if(num == 5){
lank = 2;
}
else if(num == 6){
lank = 1;
}
else{
lank = 6;
}
return lank;
}
반응형
'JAVA' 카테고리의 다른 글
[Java] Coding Test (크레인 인형뽑기 게임) (0) | 2022.08.09 |
---|---|
[Java] Coding Test (Pick two and add them) (0) | 2022.08.08 |
[Java] Annotation (0) | 2022.08.04 |
[Java] enum(열거형) (0) | 2022.08.03 |
[Java] Generic Programming (0) | 2022.08.01 |