문제 설명
순위 | 당첨 내용 |
---|---|
1 | 6개 번호가 모두 일치 |
2 | 5개 번호가 일치 |
3 | 4개 번호가 일치 |
4 | 3개 번호가 일치 |
5 | 2개 번호가 일치 |
6(낙첨) | 그 외 |
로또 6/45(이하 ‘로또’로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다.
로또를 구매한 민우는 당첨 번호 발표일을 학수고대하고 있었습니다. 하지만, 민우의 동생이 로또에 낙서를 하여, 일부 번호를 알아볼 수 없게 되었습니다. 당첨 번호 발표 후, 민우는 자신이 구매했던 로또로 당첨이 가능했던 최고 순위와 최저 순위를 알아보고 싶어 졌습니다. 알아볼 수 없는 번호를 0
으로 표기하기로 하고, 민우가 구매한 로또 번호 6
개가 44, 1, 0, 0, 31 25
라고 가정해보겠습니다. 당첨 번호 6
개가 31, 10, 45, 1, 6, 19
라면, 당첨 가능한 최고 순위와 최저 순위의 한 예는 아래와 같습니다.
당첨 번호 | 31 | 10 | 45 | 1 | 6 | 19 | 결과 |
---|---|---|---|---|---|---|---|
최고 순위 번호 | 31 | 0→10 | 44 | 1 | 0→6 | 25 | 4개 번호 일치,3등 |
최저 순위 번호 | 31 | 0→11 | 44 | 1 | 0→7 | 25 | 2개 번호 일치,5등 |
순서와 상관없이, 구매한 로또에 당첨 번호와 일치하는 번호가 있으면 맞힌 걸로 인정됩니다. 알아볼 수 없는 두 개의 번호를 각각 10, 6
이라고 가정하면 3
등에 당첨될 수 있습니다. 3
등을 만드는 다른 방법들도 존재합니다. 하지만, 2
등 이상으로 만드는 것은 불가능합니다. 알아볼 수 없는 두 개의 번호를 각각 11, 7
이라고 가정하면 5등에 당첨될 수 있습니다. 5
등을 만드는 다른 방법들도 존재합니다. 하지만, 6
등(낙첨)으로 만드는 것은 불가능합니다. 민우가 구매한 로또 번호를 담은 배열 lottos
, 당첨 번호를 담은 배열 win_nums
가 매개변수로 주어집니다. 이때, 당첨 가능한 최고 순위와 최저 순위를 차례대로 배열에 담아서 return
하도록 solution
함수를 완성해주세요.
제한사항
- lottos는 길이 6인 정수 배열입니다.
- lottos의 모든 원소는 0 이상 45 이하인 정수입니다.
- 0은 알아볼 수 없는 숫자를 의미합니다.
- 0을 제외한 다른 숫자들은 lottos에 2개 이상 담겨있지 않습니다.
- lottos의 원소들은 정렬되어 있지 않을 수도 있습니다.
- win_nums은 길이 6인 정수 배열입니다.
- win_nums의 모든 원소는 1 이상 45 이하인 정수입니다.
- win_nums에는 같은 숫자가 2개 이상 담겨있지 않습니다.
- win_nums의 원소들은 정렬되어 있지 않을 수도 있습니다.
입출력 예
lottos | win_nums | result |
---|---|---|
[44, 1, 0, 0, 31, 25] | [31, 10, 45, 1, 6, 19] | [3, 5] |
[0, 0, 0, 0, 0, 0] | [38, 19, 20, 40, 15, 25] | [1, 6] |
[45, 4, 35, 20, 3, 9] | [20, 9, 3, 45, 4, 35] | [1, 1] |
입출력 예 설명
입출력 예 #1
문제 예시와 같습니다.
입출력 예 #2
알아볼 수 없는 번호들이 아래와 같았다면, 1등과 6등에 당첨될 수 있습니다.
당첨 번호 | 38 | 19 | 20 | 40 | 15 | 25 | 결과 |
---|---|---|---|---|---|---|---|
최고 순위 번호 | 0→38 | 0→19 | 0→20 | 0→40 | 0→15 | 0→25 | 6개 번호 일치, 1등 |
최저 순위 번호 | 0→21 | 0→22 | 0→23 | 0→24 | 0→26 | 0→27 | 0개 번호 일치, 6등 |
입출력 예 #3
민우가 구매한 로또의 번호와 당첨 번호가 모두 일치하므로, 최고 순위와 최저 순위는 모두 1등입니다.
풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import java.util.Arrays;
public class solution {
public int[] solution(int[] lottos, int[] win_nums) {
int[] rank = {6,6,5,4,3,2,1};
int zeros = 0;
int count = 0;
for (int i = 0; i < lottos.length; i++) {
if (lottos[i]==0){
zeros++;
continue;
}
for (int a : win_nums){
if (lottos[i] == a) count++;
}
}
int[] answer = {rank[count+zeros],rank[count] };
return answer;
}
public static void main(String[] args) {
solution l = new solution();
// int[] lottos = {44, 1, 0, 0, 31, 25};
// int[] win_nums ={31, 10, 45, 1, 6, 19};
// // result [3, 5]
// int[] lottos = {0, 0, 0, 0, 0, 0};
// int[] win_nums ={38, 19, 20, 40, 15, 25};
// // result [1, 6]
int[] lottos = {45, 4, 35, 20, 3, 9};
int[] win_nums ={20, 9, 3, 45, 4, 35};
// result [1, 1]
Arrays.stream(l.solution(lottos, win_nums)).forEach(System.out::println);
}
}