프로그래머스

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

have a good time 2021. 12. 2. 10:59

 

import java.util.*;

class Solution {
    public int[] solution(int[] lottos, int[] win_nums) {
        int[] answer = {0,0};
        int count = 0;
        
        
        Arrays.sort(lottos);
        for(int i=0; i<6;i++){
            if(lottos[i]!=0) break;
            count++;
        }
        
        Arrays.sort(win_nums); 
        for(int i=0; i<6; i++){
            for(int j=0; j<6;j++){
                if(lottos[i]!=win_nums[j]) continue;
                answer[0]++;
                answer[1]++;
            }
        }
        
        
        answer[0]+=count;
        
        
        for(int i=0; i<2;i++){
            if(2<=answer[i] && answer[i]<=6){
            int k = answer[i];
            answer[i] =7-k;
            }else {
                answer[i]=6;
            }
        }
        
        
        
        return answer;
    }
}

 

사용 용도 

answer[0] : 최고 순위 

answer[1] : 최저 순위

lottos : 내가 입력한 로또 번호

win_nums : 로또 당첨 번호

 

 

일단, 내가 입력한 로또 번호에 있는 0의 값을 count 변수로 센다.

그런 다음 내가 입력한 로또 번호(lottos)와 로또 당첨 번호(win_nums)를 비교해서 

일치한다면 answer[0]과 answer[1] 을 증가시킨다.

(일치할 수록 등수가 낮아지지만, 6->5->...->1

여기서는 일단 일치할 수록 값을 증가시킨 뒤 다음 for문에서 등수 바꿔줌 )

 

answer[0]은 최종적으로 최고순위를 나타내려는 값으로,

0의 개수 만큼 로또 번호가 일치할 가능성이 생긴다.

따라서 0의 개수만큼 (count 변수) answer[0]에 더해준다.

 

그런 다음, for문에서 정답에 맞도록 answer[0], answer[1] 을 변경해준다.

즉 일치 값이 많을 수록 등수가 낮아짐(6->5->...)

 

특히 6개가 일치하면 등수가 1, 5개가 일치하면 등수가2

이런식이므로, 숫자 7을 이용하면 된다.

또한,문제에서 당첨내용이

2개 일치 : 순위 5,

3개 일치 : 순위 4,

4개 일치 : 순위 3,

5개 일치 : 순위 2,

6개 일치 : 순위 1

 

이렇게만 주어졌으므로, answer[i]는 2이상, 6이하의 범위만 갖을 때만 순위가 5위까지 매겨지고

나머지는 순위 6으로 매겨지게 하면 된다. 

 

 

 

 

 

 

참고 자료 : https://velog.io/@nari120/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EB%A1%9C%EB%98%90%EC%9D%98-%EC%B5%9C%EA%B3%A0-%EC%88%9C%EC%9C%84%EC%99%80-%EC%B5%9C%EC%A0%80-%EC%88%9C%EC%9C%84-Java#2021-dev-matching%EC%9B%B9-%EB%B0%B1%EC%97%94%EB%93%9C-%EA%B0%9C%EB%B0%9C%EC%9E%90%EC%83%81%EB%B0%98%EA%B8%B0

 

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

https://programmers.co.kr/learn/courses/30/lessons/77484< 입력 >lottos = 44, 1, 0, 0, 31, 25win_nums = 31, 10, 45, 1, 6, 19< 출력 >answer = 3,

velog.io