https://school.programmers.co.kr/learn/courses/30/lessons/77484
로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다.
로또를 구매한 민우는 당첨 번호 발표일을 학수고대하고 있었습니다. 하지만, 민우의 동생이 로또에 낙서를 하여, 일부 번호를 알아볼 수 없게 되었습니다. 당첨 번호 발표 후, 민우는 자신이 구매했던 로또로 당첨이 가능했던 최고 순위와 최저 순위를 알아보고 싶어 졌습니다.
민우가 구매한 로또 번호를 담은 배열 lottos, 당첨 번호를 담은 배열 win_nums가 매개변수로 주어집니다. 동생이 지워서 알아볼 수 없는 숫자는 0으로 표시됩니다. 이때, 당첨 가능한 최고 순위와 최저 순위를 차례대로 배열에 담아서 return 하도록 solution 함수를 완성해주세요.
로또 번호 순위를 동생이 지운 번호가 다 맞았을 때와, 안맞았을 때로 구분하면 되는 간단한 문제. 동생이 지운 번호의 수를 free
, 지워지지 않은 번호 중 맞은 번호의 수를 score
로 저장하고 순위를 판별했다.
결론적으로, 다음과 같이 진행했다.
1. 2중 for문을 통해 free
와 score
를 구한다.
2. 점수에 따라 등수를 판별한다. (예외처리 포함)
class Solution {
public int[] solution(int[] lottos, int[] win_nums) {
int[] answer = new int[2];
int score = 0;
int free = 0;
for (int i = 0; i < 6; i++) {
if(lottos[i] == 0){
free++;
}
else{
for (int j = 0; j < 6; j++) {
if(lottos[i] == win_nums[j]){
score++;
break;
}
}
}
}
answer[0] = 6 - score - free + 1;
answer[1] = 6 - score + 1;
if (answer[1] > 6){
answer[1] = 6;
}
if (answer[1] < 1){
answer[1] = 1;
}
if (answer[0] < 1){
answer[0] = 1;
}
if (answer[0] > 6 ){
answer[0] = 6;
}
return answer;
}
}