티스토리 뷰

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

 

🐢 설명

문제는 길지만 내용은 정말 간단하다.

 

내가 뽑은 6개의 숫자와 1등 숫자 6개를 비교하는데, 나의 숫자가 0인 경우 전부 틀리거나 전부 맞을 때의 경우를 구하면 된다.

 

숫자도 6개뿐이으로 2중 for문으로 모든 숫자를 비교해서 1등 번호에 존재하는 숫자의 개수를 구하고, 나의 숫자에서 0의 개수를 구한다.

최소 등수는 전자에서 구한 1등번호와 같은 숫자의 개수로 계산하고, 최대 등수는 전자에서 더한 개수 + 0의 개수의 값으로 계산한다.

 

시간복잡도 : O(n^2)

 

🐢코드
import java.util.*;

class Solution {
    public int[] solution(int[] lottos, int[] win_nums) {
        
        int zeroCnt = 0;
        int matchCnt = 0;
        
        for (int i = 0; i < 6; i++)
        {
            int myN = lottos[i];
            if (myN == 0) {
                zeroCnt++;
                continue;
            }
            for (int j = 0; j < 6; j++) 
            {
                if (myN == win_nums[j]) {
                    matchCnt++;
                    break;
                }
            }
        }
        
        int min = calcPoint(matchCnt);
        int max = calcPoint(matchCnt + zeroCnt);
        
        return new int[]{max, min};
    }
    
    private static int calcPoint(int matchCnt)
    {
        switch (matchCnt) {
            case 6:
                return 1;
            case 5:
                return 2;
            case 4:
                return 3;
            case 3:
                return 4;
            case 2:
                return 5;
        }
        return 6;
    }
}
🐢 마무리
반응형
Comments
반응형
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday