로또의 최고 순위와 최저 순위
import java.util.*;
class Solution {
public int[] solution(int[] lottos, int[] win_nums) {
int[] answer = {0,0};
int count = 0;
Arrays.sort(lottos);
for(int i=0; i<6;i++){
if(lottos[i]!=0) break;
count++;
}
Arrays.sort(win_nums);
for(int i=0; i<6; i++){
for(int j=0; j<6;j++){
if(lottos[i]!=win_nums[j]) continue;
answer[0]++;
answer[1]++;
}
}
answer[0]+=count;
for(int i=0; i<2;i++){
if(2<=answer[i] && answer[i]<=6){
int k = answer[i];
answer[i] =7-k;
}else {
answer[i]=6;
}
}
return answer;
}
}
사용 용도
answer[0] : 최고 순위
answer[1] : 최저 순위
lottos : 내가 입력한 로또 번호
win_nums : 로또 당첨 번호
일단, 내가 입력한 로또 번호에 있는 0의 값을 count 변수로 센다.
그런 다음 내가 입력한 로또 번호(lottos)와 로또 당첨 번호(win_nums)를 비교해서
일치한다면 answer[0]과 answer[1] 을 증가시킨다.
(일치할 수록 등수가 낮아지지만, 6->5->...->1
여기서는 일단 일치할 수록 값을 증가시킨 뒤 다음 for문에서 등수 바꿔줌 )
answer[0]은 최종적으로 최고순위를 나타내려는 값으로,
0의 개수 만큼 로또 번호가 일치할 가능성이 생긴다.
따라서 0의 개수만큼 (count 변수) answer[0]에 더해준다.
그런 다음, for문에서 정답에 맞도록 answer[0], answer[1] 을 변경해준다.
즉 일치 값이 많을 수록 등수가 낮아짐(6->5->...)
특히 6개가 일치하면 등수가 1, 5개가 일치하면 등수가2
이런식이므로, 숫자 7을 이용하면 된다.
또한,문제에서 당첨내용이
2개 일치 : 순위 5,
3개 일치 : 순위 4,
4개 일치 : 순위 3,
5개 일치 : 순위 2,
6개 일치 : 순위 1
이렇게만 주어졌으므로, answer[i]는 2이상, 6이하의 범위만 갖을 때만 순위가 5위까지 매겨지고
나머지는 순위 6으로 매겨지게 하면 된다.
[프로그래머스] 로또의 최고 순위와 최저 순위 Java
https://programmers.co.kr/learn/courses/30/lessons/77484< 입력 >lottos = 44, 1, 0, 0, 31, 25win_nums = 31, 10, 45, 1, 6, 19< 출력 >answer = 3,
velog.io