𝑪𝒐𝒅𝒊𝒏𝒈 𝑻𝒆𝒔𝒕

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

기누 2022. 4. 15. 05:00

#문제

https://programmers.co.kr/learn/courses/30/lessons/77484?language=java 

 

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

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

programmers.co.kr

 

#자바 풀이

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.stream.Collectors;

class Solution {
    public int[] solution(int[] lottos, int[] win_nums) {
        
      int max = 0; // 로또 최고 등수를 받을 int 
      int min = 0; // 로또 최저 등수를 받을 int 
      int count = 0; // 맞는 로또 번호의 개수를 셀 int 
      
      ArrayList<Integer> win = (ArrayList<Integer>) Arrays.stream(win_nums).boxed().collect(Collectors.toList());
      // 로또 당첨자의 번호를 받아 순서대로 sort 
      ArrayList<Integer> lotto = (ArrayList<Integer>) Arrays.stream(lottos).boxed().collect(Collectors.toList());
      // 내가 쓴 로또 번호의 번호를 받아 순서대로 sort 
      int zero = Collections.frequency(lotto, 0);
      // 내가 쓴 로또 번호에서 0 의 개수를 셈 

      for (int i = 0; i < lotto.size(); i++) {
         if (lotto.contains(win.get(i))){count++;}
      }
    
      switch (count) {
      case 6:
         min = 1;
         break;
      case 5:
         min = 2;
         break;
      case 4:
         min = 3;
         break;
      case 3:
         min = 4;
         break;
      case 2:
         min = 5;
         break;
      default: 
         min = 6;
         break;
   }
    max = min - zero;
        if (max == 0){max = 1;} 
        int[] arr = new int[] {max, min};
        return arr;
    }
}

 

#한 줄 느낌 

생각보다 쉬웠고, 빠르게 풀었던 문제! 레벨 1의 문제들은 쉽게쉽게 풀 수 있는 것 같다. switch 문으로 0으로 처리 된 번호를 제외한 당첨 등수를 min(최저 등수) 값에 담아주고, 0의 갯수를 세어서 min 에 더해주면 끝난다. Collections 와 stream 만 쓰면 편하게 풀 수 있는 문제!