[ 2021 Dev-Matching : 웹 백엔드 개발자(상반기) - 로또의 최고 순위와 최저 순위 ]
https://programmers.co.kr/learn/courses/30/lessons/77484
- 등수를 먹이는 rank라는 배열을 초기화 해준다. 인덱스는 맞춘 개수, 요소는 등수를 나타내도록 {6, 5, 4, 3, 2, 1}로 초기화했다.
- 맞춘 개수를 나타내는 fit변수, 모르는 번호를 나타내는 0의 개수를 나타내는 countZero또한 선언.
- lottos의 로또 번호가 모로는 번호(0)가 아니고 win_nums의 당첨 번호와 일치 한다면 맞은 개수 fit을 증가(++) 시키고 break, 0이라면 countZero를 증가(++).
- answer 배열의 첫번째 인덱스에는 최대 등수를, 두번째 인덱스에는 최소 등수를 적어야하므로 첫번째와 두번째에 맞춘 fit값을 대입하여준다. 그리고 최대 등수(첫번째 칸)에는 countZero(0은 어떤 수든 될 수 있으므로 countZero만큼 더 맞았다고 할 수 있음.)를 더해준다.
- answer의 길이 만큼 for문을 돌려 그 안에 rank의 길이 만큼 이중 for문을 돌린다.
이때, 맞은 개수랑 같은 인덱스의 요소를 본인 answer 배열 칸의 값으로 수정하여주고 0은 rank에 없으므로 따로 if문으로 처리해준다. 그 후 answer값을 리턴.
맞은 개수(인덱스) | 0개 | 1개 | 2개 | 3개 | 4개 | 5개 | 6개 |
---|---|---|---|---|---|---|---|
등 수 | 6 | 6 | 5 | 4 | 3 | 2 | 1 |
import java.util.ArrayList;
class Solution {
public int[] solution(int[] lottos, int[] win_nums) {
int[] answer = new int[2];
int[] rank = {6, 5, 4, 3, 2, 1};
int fit = 0;
int countZero = 0;
ArrayList<Integer> noneFit = new ArrayList<Integer>();
for(int n : lottos) {
if(n != 0) {
for(int i=0; i<win_nums.length; i++) {
if(n == win_nums[i]) {
fit++;
break;
}
}
noneFit.add(n);
}
else {
countZero++;
}
}
answer[0] = countZero + fit;
answer[1] = fit;
for(int i=0; i<answer.length; i++) {
for(int j=0; j<rank.length; j++) {
if(answer[i] == rank[j]) {
answer[i] = j+1;
break;
}
else if(answer[i] == 0) {
answer[i] = 6;
}
}
}
return answer;
}
}