[JAVA] 로또의 최고 순위와 최저 순위

로또의 최고 순위와 최저 순위

링크

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

난이도 : Level 1

유형 : 구현

코딩테스트 연습 > 2021 Dev-Matching: 웹 백엔드 개발자(상반기) > 로또의 최고 순위와 최저 순위

 

문제 설명

 

로또를 구매한 민우는 당첨 번호 발표일을 학수고대하고 있었습니다. 하지만, 민우의 동생이 로또에 낙서를 하여, 일부 번호를 알아볼 수 없게 되었습니다. 당첨 번호 발표 후, 민우는 자신이 구매했던 로또로 당첨이 가능했던 최고 순위와 최저 순위를 알아보고 싶어 졌습니다.

민우가 구매한 로또 번호를 담은 배열 lottos, 당첨 번호를 담은 배열 win_nums가 매개변수로 주어집니다. 이때, 당첨 가능한 최고 순위와 최저 순위를 차례대로 배열에 담아서 return 하도록 solution 함수를 완성해 주세요.

 

제한사항

 

  • lottos는 길이 6인 정수 배열입니다.
  • lottos의 모든 원소는 0 이상 45 이하인 정수입니다.
    • 0은 알아볼 수 없는 숫자를 의미합니다.
    • 0을 제외한 다른 숫자들은 lottos에 2개 이상 담겨있지 않습니다.
    • lottos의 원소들은 정렬되어 있지 않을 수도 있습니다.
  • win_nums은 길이 6인 정수 배열입니다.
  • win_nums의 모든 원소는 1 이상 45 이하인 정수입니다.
    • win_nums에는 같은 숫자가 2개 이상 담겨있지 않습니다.
    • win_nums의 원소들은 정렬되어 있지 않을 수도 있습니다.
  •  

 

풀이

 

문제에서 주어진 로직을 잘 이해하고 구현하는 문제였다.

주어진 lottos와 win_nums를 비교해 당첨된 숫자를 세고 0의 숫자를 센다.

당첨된 숫자의 개수가 최저 순위, 당첨된 숫자의 개수 + lottos에서 0이 등장한 횟수 가 최고 순위이다.

 

코드

class Solution {
    public int[] solution(int[] lottos, int[] win_nums) {
        int[] answer = new int[2];
        int count = 0;
        int zero = 0;
        
        // 당첨 숫자랑 몇개 같은지
        for(int i = 0; i < win_nums.length; i++) {
            for(int j = 0; j < lottos.length; j++) {
                if(win_nums[i] == lottos[j]) {
                    count++;
                    break;
                }
            }
        }
        // 0의 개수 
        for(int j = 0; j < lottos.length; j++) {
                if(0 == lottos[j]) {
                    zero++;
                }
        }
        // 각 순위 계산
        answer[1] = winning(count);
        answer[0] = winning(count+zero);
        return answer;
    }
    // 맞춘 숫자에 따라 순위 반환
    public int winning(int x) {
        switch (x) {
            case 6:
                return 1;
            case 5:
                return 2;
            case 4:
                return 3;
            case 3:
                return 4;
            case 2:
                return 5;
            default:
                return 6;
        }
    }
}