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

이강혁·2024년 8월 29일
0

프로그래머스

목록 보기
74/79
post-custom-banner

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]};
    }
}
profile
사용자불량
post-custom-banner

0개의 댓글