728x90

알아볼 수 없는 로또 번호는 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

+ Recent posts