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

컴투루·2022년 7월 5일
0

프로그래머스 Lv.1

목록 보기
33/38

2021 Dev-Matching

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


👀 문제

로또의 순위는 아래의 표를 기준으로 정해진다.

로또를 구매한 민우가 동생의 낙서로 일부 번호를 알아볼 수 없게 되었다. 자신이 구매한 로또로 당첨이 가능했던 최고순위와 최저순위를 알아보고자 한다.

알아볼 수 없는 번호를 0으로 표기해서 알아보자.
민우가 구매한 로또 번호를 담은 배열 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의 원소들은 정렬되어 있지 않을 수도 있습니다.

👩‍💻 입력 & 🧙 출력

lottoswin_numsresult
[44, 1, 0, 0, 31, 25][31, 10, 45, 1, 6, 19][3,5]
[0, 0, 0, 0, 0, 0][38, 19, 20, 40, 15, 25][1, 6]
[45, 4, 35, 20, 3, 9][20, 9, 3, 45, 4, 35][1, 1]

🙋‍♀️ 풀이

class Solution {
    public int[] solution(int[] lottos, int[] win_nums) {
        int[] answer = new int[2];
        int n=0; //일치하는 개수
        int zero = 0; //0의 개수
        
        for(int i=0;i<lottos.length;i++){
            if(lottos[i] == 0){
                zero++;
            }
            for(int j=0;j<win_nums.length;j++){
                if(lottos[i] == win_nums[j]){
                    n++;    
                }
            }
        
        }
        
        if(n==0 && zero ==0){
            answer[0] = 6-(n+zero) ;
            answer[1] = 6-n;    
        }else if(zero==6){
            answer[0] = 1 ;
            answer[1] = 6;    
        }else{
            answer[0] = 7-(n+zero) ;
            answer[1] = 7-n;
        }
        
        return answer;
    }
}

밑에 조건문이 너무 많이서 별로였는데 다른 코드를 보니 간단히 줄일 수 있었다.

최저순위와 최고순위로 변수로 두고 6보다 큰 경우만 조건문으로 구현했다.

int max = 7-(n+zero);
int min = 7- n;

if(max>6) max = 6;
if(min>6) min = 6;

return new int[] {max,min};
profile
맘 먹으면 못할 게 없지

0개의 댓글