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

jonghyukLee·2022년 5월 11일
0

이번에 풀어본 문제는
프로그래머스 로또의 최고 순위와 최저 순위 입니다.

📕 문제 링크

❗️코드

import java.util.*;
class Solution {
    public int[] solution(int[] lottos, int[] win_nums) {
        //맞춘 개수에 따른 점수 idx = 맞춘개수, val = 순위
        int [] rank = {6,6,5,4,3,2,1};
        
        //당첨 번호
        boolean [] winNum = new boolean[46];    
        for(int n : win_nums) winNum[n] = true;
        
        int correctCnt = 0;
        int zeroCnt = 0;
        
        for(int n : lottos)
        {
            if(n == 0) zeroCnt++;
            else if(winNum[n]) correctCnt++;
        }
        
        //최소는 직접 맞춘 개수
        int min = correctCnt;
        //최대는 가려진 수가 모두 당첨번호일때
        int max = correctCnt + zeroCnt;
    
        return new int[] {rank[max],rank[min]};
    }
}

📝 풀이

0으로 가려진 숫자를 사용하여 만들 수 있는 등수의 최소, 최댓값을 구하는 문제입니다.
최소는 현재 확인할 수 있는 맞춘 숫자를 제외하고 다 틀린 경우일 것이고,
최대는 0으로 가려진 숫자가 모두 당첨숫자일 경우일 것입니다.
따라서 0의 갯수와 맞은 당첨번호의 갯수만 파악한다면, 쉽게 해결할 수 있습니다.
편의상 맞춘 개수에 따른 등수를 미리 rank 배열로 만들어 놓고, 0의 개수와 맞춘 개수를 통해 결과를 도출해낼 수 있습니다.

📜 후기

로또라는 스토리가 주어져서 재밌게 풀었던 것 같습니다! ^~^
나도 당첨되고싶다....

profile
머무르지 않기!

0개의 댓글