𝑪𝒐𝒅𝒊𝒏𝒈 𝑻𝒆𝒔𝒕
[프로그래머스] 로또의 최고 순위와 최저 순위
기누
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 만 쓰면 편하게 풀 수 있는 문제!