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

이한솔·2023년 10월 19일
0

프로그래머스_레벨1

목록 보기
51/65
post-thumbnail

✨️ 문제 설명

: 민우가 구매한 로또 번호를 담은 배열 lottos, 당첨 번호를 담은 배열 win_nums가 매개변수로 주어집니다. 이때, 당첨 가능한 최고 순위와 최저 순위를 차례대로 배열에 담아서 return 하도록 solution 함수를 완성해주세요.

-> 자세한 내용 보러가기

✨️자바 풀이

import java.util.*; 
class Solution {
   public int[] solution(int[] lottos, int[] win_nums) {
       int[] answer = new int[2];  //최고순위와 최저 순위를 return
       int zero = 0;   //알아볼 수 없는 번호 -> 다 맞으면 최고 다 틀리면 최저
       int get = 0;    //맞춘 번호
       
       Set<Integer> set = new HashSet<>();
       for(int num : win_nums){
           set.add(num);
       }
       
       for(int lotto : lottos){
           if(lotto == 0){
               zero++;
           }else if(set.contains(lotto)){
               get++;
           }
       }
       
       //최고 순위는 zero가 다 맞아야함
       answer[0] = 7 - Math.max((zero + get), 1);
       answer[1] = 7 - Math.max(get, 1);
       
       
       return answer;
   }
}

풀이 설명

: 로또 번호를 비교하기 위해 Set에 당첨 번호를 넣어서 비교하였다.
: 반복문으로 0인 개수와 당첨 개수를 구한다. 최고 순위는 0의 개수가 다 맞는 것이고, 최저 순위는 0의 개수가 다 틀리는 것이다.
: 최저, 최고 순위 모두 6위가 될 수 있고, 맞은 개수는 최대 6개이기 때문에 Math.max를 이용해 순위가 6을 초과하지 않도록 하였다. 이 부분을 놓쳐서 처음에 최고순위를 비교할 때, Math.min((zero + get) , 6)을 하였을 때, 테스트 케이스 14가 틀렸었다.
profile
개인 공부용

0개의 댓글