로또 번호 중 몇 개가 지워졌다.
지워진 부분은 무시하고 나머지 부분으로 최고 순위와 최저 순위를 구하여라.
import java.util.*;
class Solution {
public int[] solution(int[] lottos, int[] win_nums) {
int zero_cnt = 0; // 0인 부분을 체크 (지워진 부분)
Map<Integer, Integer> map = new HashMap<>();
for (int i=0;i<lottos.length;i++) {
if (lottos[i] != 0) {
map.put(lottos[i], i); // 0이 아닌 숫자를 map에 Put
} else {
zero_cnt++; // 0인 경우 카운팅
}
}
int correct = 0; // 당첨 번호 수
for (int i=0;i<win_nums.length;i++) {
// 알아볼 수 있는 숫자를 답고있는 map의 포함여부로 확인
if (map.containsKey(win_nums[i])) {
correct++;
}
}
// 0인 부분(지워진 부분)이 모두 당첨인 경우가 최고 당첨 수
int max = correct + zero_cnt;
// 0인 부분이 모두 미당첨인 경우가 최저 당첨 수
int min = correct;
// 순위 결정
int best = max > 1 ? (7-max) : 6;
int worst = min > 1 ? (7-min) : 6;
return new int[]{best, worst};
}
}