꾸물꾸물 졔의 개발공부

[프로그래머스] 로또의 최고 순위와 최저 순위 - JAVA (2021 Dev-Matching: 웹 백엔드 개발자(상반기) Lv.1) 본문

알고리즘/프로그래머스

[프로그래머스] 로또의 최고 순위와 최저 순위 - JAVA (2021 Dev-Matching: 웹 백엔드 개발자(상반기) Lv.1)

체제 2023. 6. 19. 13:41

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

알고리즘 

  • 최저 순위 : 표시되있는 숫자 중 맞춘 숫자의 갯수 
  • 최고 순위 : 최저순위 + 0의 갯수 (=지워진 숫자가 모두 당첨된 숫자) 

 

구현 과정

  • none_cnt : 지워진 숫자(=0) 의 갯수 
  • win_cnt : 당첨된 숫자의 갯수 

 

1. lottos 배열을 탐색하며 0이 나올 경우, 지워진 숫자 none_cnt 를 카운트한다.

 

2. win_nums 배열과 같은 숫자를 가진 번호가 나올 경우, 당첨된 숫자 win_cnt 를 카운트 한다. 

 

3. 최고 순위는 win_cnt + none_cnt 값의 순위 

 

4. 최저 순위는 win_cnt 값의 순위 

 


소스 코드

import java.util.*;

class Solution {
    public int[] solution(int[] lottos, int[] win_nums) {
        int[] answer = new int[2]; 
        
        int none_cnt=0; //지워진 숫자 
        int win_cnt=0; //당첨된 숫자 
        for(int num : lottos){
            if (num==0) none_cnt++; 
            
            for(int win : win_nums){
                if(num == win) win_cnt++; 
            }
        }
        
        answer[0] = getGrade(none_cnt+win_cnt);
        answer[1] = getGrade(win_cnt); 
      
        return answer;
    }
    static int getGrade(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;
        }
    }
}