https://school.programmers.co.kr/learn/courses/30/lessons/77484
로또를 샀는데 번호 몇 개가 지워졌고, 1등 당첨 번호가 주어진다.
이 때 로또 최고와 최저 순위를 구하는 문제이다.
int[] answer = {0, 6, 5, 4, 3, 2, 1};
순위를 저장한 배열을 만들고
int none = 0;
for(int i=0;i < lottos.length;i++){
if(lottos[i] == 0){
none++;
}
}
지워진 번호의 개수를 구해서 저장했다.
int check = 0;
for(int i=0;i<lottos.length;i++){
for(int j=0;j<win_nums.length;j++){
if(lottos[i] == win_nums[j]){
check++;
}
}
}
구매한 로또 번호와 1등 번호의 숫자를 전부 비교하면서 지워지지 않은 숫자 중 몇 개가 일치하는지 구했다.
return new int[]{none + check<=1?6:answer[none+check], check<=1?6:answer[check]};
마지막으로 한개 이하로 일치한다면 6등을 아니라면 해당 순위를 구하는 방식으로, 최고 순위는 지워진 숫자의 개수 + 맞은 숫자의 개수, 최저 순위는 맞힌 숫자의 개수만 고려해서 순위를 구했다.
class Solution {
public int[] solution(int[] lottos, int[] win_nums) {
int[] answer = {0, 6, 5, 4, 3, 2, 1};
int none = 0;
for(int i=0;i < lottos.length;i++){
if(lottos[i] == 0){
none++;
}
}
int check = 0;
for(int i=0;i<lottos.length;i++){
for(int j=0;j<win_nums.length;j++){
if(lottos[i] == win_nums[j]){
check++;
}
}
}
return new int[]{none + check<=1?6:answer[none+check], check<=1?6:answer[check]};
}
}