알아볼 수 없는 로또 번호는 0으로 하여 입력한 로또 번호 배열과 실제 로또 우승 번호를 비교하여
가능한 최저 순위와 최고 순위를 반환
public int[] solution(int[] lottos, int[] win_nums) {
int[] answer = new int[2];
int zeroCount = 0;
Set<Integer> set = new HashSet<>();
for (int i = 0; i < lottos.length; i++) {
if(lottos[i]==0)zeroCount++;
else {
set.add(lottos[i]);
}
}
int nonZeroCount = 6-zeroCount;
for (int i = 0; i < win_nums.length; i++) {
set.add(win_nums[i]);
}
answer[1] = 7-(6+nonZeroCount-set.size());
answer[0] = 7-(6+nonZeroCount-set.size() + zeroCount);
if(answer[1]>=7)answer[1] = 6;
if(answer[0]>=7)answer[0] = 6;
return answer;
}
0이 아닌 수 중에서 win_nums와 일치하는 개수가 최저 일치 개수이고
최저 일치 개수에 0이 모두 win_nums와 일치한다고 가정했을 때가 최고 일치 개수이다.
일치 개수는 set에 win_nums와 lottos중 0이 아닌 수를 집어넣었을 때 중복을 허용하지 않는 set의 size()를 이용해 구하였다.
구한 수는 맞힌 개수이지 순위가 아니기 때문에 7에서 빼주어 순위를 구하고
만약 맞힌개 0 이라면 7에서 뺐을때 7이 나오지만 순위로는 1과 같은 6위 이므로 6으로 변경해준다
'Java > Coding Test' 카테고리의 다른 글
올바른 괄호 문제 풀이 (1) | 2023.10.05 |
---|---|
크레인 인형뽑기 게임 문제 풀이 (0) | 2023.10.04 |
다트 게임 문제 풀이 (0) | 2023.10.04 |
실패율 문제 풀이 (0) | 2023.10.01 |
문자열 나누기 문제 풀이 (1) | 2023.10.01 |