ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Programmers / level1] 로또의 최고 순위와 최저 순위
    Programmers/코딩테스트 풀이 2021. 12. 19. 18:31

    프로그래머스 / level1  / Java  / 로또의 최고 순위와 최저 순위

     

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

    순서와 상관없이, 구매한 로또에 당첨 번호와 일치하는 번호가 있으면 맞힌 걸로 인정됩니다.

    알아볼 수 없는 두 개의 번호를 각각 10, 6이라고 가정하면 3등에 당첨될 수 있습니다.
    3등을 만드는 다른 방법들도 존재합니다. 하지만, 2등 이상으로 만드는 것은 불가능합니다.

    알아볼 수 없는 두 개의 번호를 각각 11, 7이라고 가정하면 5등에 당첨될 수 있습니다.
    5등을 만드는 다른 방법들도 존재합니다. 하지만, 6등(낙첨)으로 만드는 것은 불가능합니다.

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

     

     

     

    class lottoSolution {
        public int[] solution(int[] lottos, int[] win_nums) {
            // 최대,최소 등수를 리턴하는 answer
            int[] answer = new int[2];
    
            int[] level = {6,6,5,4,3,2,1};
            int correct = 0; // 식별 가능한 번호 중 정답과 일치한 개수
            int zero = 0; // 식별 불가능 한 0의 개수
    
            for (int i = 0; i < win_nums.length ; i++) {
                if (lottos[i] == 0) {
                    zero++;
                    //lottos의 값이 0일 경우(맞을 확률이 있는 경우)
                }
    
                for (int j = 0; j < lottos.length ; j++) {
                    if (win_nums[i] == lottos[j]) {
                        correct++;
                        // lottos의 값이 정답과 같은 경우(확실하게 맞은 경우)
                    }
                }
            }
    
            // 확실하게 맞은 값과 맞을 확률이 있는 값을 더해 리턴하는 최대등수
            answer[0] = level[correct + zero];
            
            // 확실하게 맞은 값만 리턴하는 최소등수
            answer[1] = level[correct];
    
            return answer;
        }
    }
Designed by Tistory.