본문 바로가기
Coding Test/프로그래머스

[프로그래머스 자바 JAVA] 로또의 최고 순위와 최저 순위 (level 1)

by 똧이 2022. 3. 14.
반응형

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

 

코딩테스트 연습 - 로또의 최고 순위와 최저 순위

로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호

programmers.co.kr

 

 

import java.util.Arrays;

class Solution {
    public int[] solution(int[] lottos, int[] win_nums) {
        int[] answer = new int[2];
        int count = 0;
        int zeroCount = 0;
        
        for(int i = 0; i < lottos.length; i++){
            if(lottos[i] == 0){
                zeroCount++;
            }
            for(int j = 0; j < win_nums.length; j++){
                if(lottos[i] == win_nums[j]){
                    count++;
                } 
            }
        }
        
        int a = calc(count);
        int b = calc(count+zeroCount);

        answer[1] = a;
        answer[0] = b;
        
        return answer;
    }
    
    static int calc(int count){
        int win = 7 - count;
        if(win == 7) win = 6;
        
        return win;
    }
}

풀이

1. int[] answer = new int[2] 배열을 만든다(최고 순위, 최저 순위 순)

2. zeroCount(알아볼 수 없는 번호의 개수)와 count(당첨번호와 일치하는 번호의 개수)를 각각 구한다

3. calc(count);와 calc(count+zeroCount);를 각각 구한다 => 당첨될 수 있는 최저순위, 최고순위 구하기

4. 최저 순위와 최고 순위를 구해서 배열에 최고 순위, 최저 순위 순으로 넣어야 하니 그에 맞게 배열에 값을 넣어 준다.

(calc(count);(최저순위)는 calc(count+zeroCount);(최고순위)보다 더 높은 순위일 수 없으므로 calc(count+zeroCount);는 배열의 첫번째([0]), calc(count);는 배열의 두번째([1])에 넣어준다.)

 

728x90

댓글