Algorithm & Data Structure/프로그래머스

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

ygreenb 2022. 2. 21. 00:21

https://programmers.co.kr/learn/courses/30/lessons/77484?language=java 

 

코딩테스트 연습 - 로또의 최고 순위와 최저 순위

로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호

programmers.co.kr

 

풀이

풀이는 간단하다.

  • 당첨 가능한 최고 순위는 0이 모두 당첨 번호라는 가정을 하고 순위를 구하고,
  • 당첨 가능한 최저 순위는 0이 모두 당첨 번호가 아니라는 가정을 하고 순위를 구한다.

lottos에서 당첨된 번호의 개수를 구해 cntNum에 저장하고, 0인 번호의 개수를 cnt0 변수에 따로 저장한다.

  • 최고순위 answer[0]은 7에서 당첨된 번호와 0개수를 더한 수를 빼준다
  • 최저순위 answer[1]은 7에서 당첨된 번호수를 빼준다. 이때, 당첨된 수가 0개일경우, 무조건 낙첨임을 주위하자!
class Solution {
    public int[] solution(int[] lottos, int[] win_nums) {
        int[] answer = {0,0}; // 당첨가능한 최고순위, 최저순위
        int cntNum =0; // 0 제외 당첨번호개수
        int cnt0 = 0; // 0 개수

        for(int i: win_nums){
            for(int j=0;j<lottos.length;j++){
                if(i==lottos[j]) {cntNum++; break;}
            }
        }
        for(int i : lottos){
                if(i==0) cnt0++;
            }  
        
        answer[0] = 7-(cntNum+cnt0);
        answer[1] = (cntNum==0)? 6: 7-cntNum;
        
        return answer;
    }
}