알고리즘

프로그래머스(로또의 최고 순위와 최저 순위)(.Java)

wqdsdsf 2023. 12. 27. 00:27
public class Lotto {
    public static void main(String[] args){ //예시 입력값
        int[] lotto = {44, 1, 0, 0, 31, 25};
        int[] win_nums ={31, 10, 45, 1, 6, 19};

        int[] result = solution(lotto, win_nums);
        for(int i =0; i<result.length; i++){
            System.out.println(result[i]);
        }
    }


    public static int[] solution(int[] lottos, int[] win_nums) {
        int count1 = 0;
        int zero_count = 0;
        for(int i=0; i<6; i++){
             if(lottos[i] == 0  && i != 5){ //0값을 찾으면 i를 1올리고 0의 갯수를 세준다(6이면 범위를 벗어나기 때문에 5까지만)
                    zero_count++;
                    continue;
                }
            else if(lottos[i] == 0  && i == 5){ //0값을 찾으면 i를 1올리고 0의 갯수를 세준다(5번째에서 0이 나오면 반복문을 종료시킨다)
                    zero_count++;
                    break;
                }
            for(int j =0; j<6; j++){
                if(lottos[i] == win_nums[j]){ //일치하는 값을 찾으면 j를 증가시키는 것을 멈추고 i를 1올린다
                    count1++;
                    break;
                }
            }
        }
        //if문을 써도 되지만 getRanking을 쓰는 이유는 if else if문을 쓰면 코드가 2배가 되어서 최대한 간결하게 할려고 했다
        int ranking1 = getRanking(count1 + zero_count);
        int ranking = getRanking(count1);
        
        int[] count = {ranking1, ranking};
        return count;
    }

    public static int getRanking(int count) { //count의 갯수를 세고 등수를 셈
        switch (count) {
            case 0:
            case 1:
                return 6;
            case 2:
                return 5;
            case 3:
                return 4;
            case 4:
                return 3;
            case 5:
                return 2;
            case 6:
                return 1;
            default:
                return 0; 
        }
    }
    
}