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

송규빈·2022년 5월 6일
0

📘 문제

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

💡 풀이

☑ 최고 순위를 위한 bestCaseCount, 최저 순위를 위한 worstCaseCount

1. lottos와 win_nums를 비교하여 일치하는 숫자의 개수를 확인한다.

-> 이중 포문을 돌려도 각 배열의 사이즈가 6이므로 괜찮다.

2. 0은 win_nums에 있는 숫자에 맞출수도 있는 숫자인 것을 인지.

3. 최고 순위는 결국 모든 숫자가 일치할 때이므로 0이 2번의 경우처럼 win_nums에 맞는 숫자가 되는 것으로 생각

4. 3번에서 count한 bestCaseCount에서 0이 모두 일치하지 않ㄴ는 경우를 계산하면 최저 순위가 나온다.(= 0을 제외한 숫자들만 일치하는 경우)

💻 코드

class Solution {
    public int[] solution(int[] lottos, int[] win_nums) {
        int[] answer = new int[2];

		
        int zeroCount = 0;
        int bestCaseCount = 0;
        int worstCaseCount = 0;
        
        for (int i = 0; i < lottos.length; i++) {
        	// 최고 순위일 때는 0이 win_nums에 있는 숫자와 같게끔 변경됐다고 생각할 수 			// 있기 때문에 0일때도 bestCaseCount를 증가
            if (lottos[i] == 0) {
                zeroCount++;
                bestCaseCount++;
            }
            for (int j = 0; j < win_nums.length; j++) {
                if (lottos[i] == win_nums[j]) bestCaseCount++;
            }
        }
        worstCaseCount = bestCaseCount - zeroCount;
        answer[0] = getRank(bestCaseCount);
        answer[1] = getRank(worstCaseCount);

        return answer;
    }

    public int getRank(int n) {
        switch (n) {
            case 6:
                return 1;
            case 5:
                return 2;
            case 4:
                return 3;
            case 3:
                return 4;
            case 2:
                return 5;
            default:
                return 6;
        }
    }
}

결과

profile
🚀 상상을 좋아하는 개발자

0개의 댓글