본문 바로가기

Plo Algorithm

프로그래머스 Lv1 로또의 최고 순위와 최저 순위

로또의 최고 순위와 최저 순위

import java.util.*;
class Solution {
    public int[] solution(int[] lottos, int[] win_nums) {
        int[] answer = new int[2];
        //두 배열의 값이 같을 때 , lottos 배열의 값이 0일 때 , 최종적으로 -해줄 때 사용할 객체의 선언
        //6개 번호가 모두 일치할 때의 값이 1이기 때문에 rank는 7로 선언한다.
        int match = 0;
        int zero = 0;
        int rank = 7;
        
        //배열의 값을 비교하기에 앞서 오름차순으로 두 배열을 정렬
        Arrays.sort(lottos);
        Arrays.sort(win_nums);
        
        //반복문으로 두 배열의 값을 비교하며 두 배열의 값이 같으면 match가 1씩 더해진다.
        for (int i = 0 ; i < lottos.length ; i++){
            for (int j =0 ; j < win_nums.length ; j++){
                if (lottos[i] == win_nums[j]) match++;
            }
            
            //lottos배열의 값이 0일 때 zero가 1씩 더해진다.
            if (lottos[i] == 0){
                zero++;
                }
            }
            
        //answer[0]는 최고순위 값이며 zero의 값이 모두 일치했다고 가정한다.
        //rank에서 match + zero값을 빼주면 최대순위 값이 반환된다.
        answer[0] = (rank - (match + zero));
        
        //Math.min은 인자값 중 더 작은 수를 반환한다.
        //rank에서 맞은 값을 뺀 나머지가 6보다 작으면 rank - match를반환
        //그 외에 경우에는 7을 반환하는 경우를 막기위해 6으로 설정해준다.
        answer[1] = (Math.min(rank - match , 6));
        
        //맞는 값이 하나도 없을 경우에는 최고순위 , 최저순위가 6등이어야한다.
        //7이 반환되는 경우를 막기위해 조건을 설정해 6이 반환되도록 해준다.
        if (answer[0] == 7 || answer[1] ==7){
            answer[0] = 6;
            answer[1] = 6;
        }
        
        return answer;
    }
}