https://programmers.co.kr/learn/courses/30/lessons/77484
< 입력 >
lottos = [44, 1, 0, 0, 31, 25]
win_nums = [31, 10, 45, 1, 6, 19]
< 출력 >
answer = [3, 5]
이중 for문을 돌면서 0의 개수를 세고, lottos 배열과 win_nums배열에 같은 값이 있는지 확인하면 되겠다고 생각했다.
그리고 sort를 써도 되나 궁금해서 약간 쓸데없지만 써봤다.
마지막 출력에 있어서 나는 if문으로 다 비교를 했는데, switch문을 쓴 사람도 있고, Math를 이용해서 푼 사람도 있었다. 거기까지는 생각을 못했기에 아래에 함께 첨부했다.
import java.util.*;
class Solution {
public int[] solution(int[] lottos, int[] win_nums) {
int[] answer = {0, 0};
int zeroCnt = 0;
Arrays.sort(lottos);
for(int i = 0; i < 6; i++) {
if(lottos[i] != 0) break;
zeroCnt++;
}
Arrays.sort(win_nums);
for(int j = 0; j < 6; j++) {
for(int k = zeroCnt; k < 6; k++) {
if(win_nums[j] != lottos[k]) continue;
answer[0]++;
answer[1]++;
}
}
answer[0] += zeroCnt;
for(int i = 0; i < 2; i++) {
if(answer[i] == 6) answer[i] = 1;
else if(answer[i] == 5) answer[i] = 2;
else if(answer[i] == 4) answer[i] = 3;
else if(answer[i] == 3) answer[i] = 4;
else if(answer[i] == 2) answer[i] = 5;
else answer[i] = 6;
}
return answer;
}
}
class Solution {
public int[] solution(int[] lottos, int[] win_nums) {
int zero = 0;
int matched = 0;
for (int l : lottos) {
if (l == 0) zero++;
else {
for (int w : win_nums) {
if (l == w) {
matched++;
break;
}
}
}
}
int min = matched;
int max = matched + zero;
int[] answer = {Math.min(7 - max, 6), Math.min(7 - min, 6)};
return answer;
}
}