https://programmers.co.kr/learn/courses/30/lessons/77484

 

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

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

programmers.co.kr

 

 

문제 분석

- 알아볼 수 없는 번호의 개수를 세고, 이 개수를 활용하여 최고 순위와 최저 순위를 출력한다.

- for문을 통해 알아볼 수 없는 번호를 세고, 최고 순위는 알아볼 수 없는 숫자를 다 맞았다고 가정하며 최저 순위는 다 틀렸다고 가정하고 등수를 반환한다.

 

 

문제 풀이

1. for문을 통해 숫자가 0이라면 알아볼 수 없는 숫자(zeroCnt)에 더한다. 만약 아니라면 그대로 일치하는지 if문을 통해 판단하고 맞다면 일치하는 숫자의 개수(goalCnt)에 더한다.

2. 최고 순위는 알아 볼 수 없는 숫자와 일치하는 숫자를 더하여 rank메소드를 통해 순위를 반환한다.

3. 최저 순위는 일치하는 숫자만을 이용하여 rank메소드를 통해 순위를 반환한다.

4. rank메소드는 맞춘 번호 개수를 전달하여 해당 순위를 반환한다.

import java.util.*;

class Solution {
    public int[] solution(int[] lottos, int[] win_nums) {
        int[] answer = new int[2];
        int zeroCnt = 0;
        int goalCnt = 0;
        
        for(int i=0;i<lottos.length;i++){
            if(lottos[i]==0){
                zeroCnt++;                
            }else{
                for(int j=0;j<win_nums.length;j++){
                    if(lottos[i]==win_nums[j]){
                        goalCnt++;
                        break;
                    }
                }
            }
        }
        
        answer[0] = rank(goalCnt+zeroCnt);
        answer[1] = rank(goalCnt);
        
        return answer;
    }
    
    static int rank(int number){
        if(number==6){
            return 1;
        }else if(number==5){
            return 2;
        }else if(number==4){
            return 3;
        }else if(number==3){
            return 4;
        }else if(number==2){
            return 5;
        }else{
            return 6;
        }
    }
}

 

 

https://github.com/SOEUN2/Algorithm