로또의 최고 순위와 최저 순위
문제 설명
로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다.
순위당첨 | 내용 |
1 | 6개 번호가 모두 일치 |
2 | 5개 번호가 일치 |
3 | 4개 번호가 일치 |
4 | 3개 번호가 일치 |
5 | 2개 번호가 일치 |
6(낙첨) | 그 외 |
로또를 구매한 민우는 당첨 번호 발표일을 학수고대하고 있었습니다. 하지만, 민우의 동생이 로또에 낙서를 하여, 일부 번호를 알아볼 수 없게 되었습니다. 당첨 번호 발표 후, 민우는 자신이 구매했던 로또로 당첨이 가능했던 최고 순위와 최저 순위를 알아보고 싶어 졌습니다.
민우가 구매한 로또 번호를 담은 배열 lottos, 당첨 번호를 담은 배열 win_nums가 매개변수로 주어집니다. 이때, 당첨 가능한 최고 순위와 최저 순위를 차례대로 배열에 담아서 return 하도록 solution 함수를 완성해주세요.
예시
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] |
코드 해석 및 전체 코드
반환할 값은 로또의 최고 순위와 최저 순위로 answer[0]은 최고 순위, answer[1]은 최저 순위가 저장된다.
민우의 로또 번호와 당첨 번호를 각각 비교하기 위해서 이중 for문을 통해 비교한다.
바깥 for문 i는 민우의 로또 번호, 안쪽 for문 j는 당첨 번호이다.
바깥쪽 for문의 if문에서 lottos[i]가 0이면 answer[0]을 증가시킨다.
알 수 없는 번호는 0으로 표시되어 있는데, 최고 순위는 0이 당첨되었다고 가정한다.
그러므로 민우의 로또 번호가 0이면 최고 순위가 담길 answer[0]을 증가시킨다.
안쪽 for문의 if문에서는 lottos[i]와 win_nums[j]가 같으면 최저 순위가 담길 answer[1]을 증가시킨다.
최저 순위에선 알 수 없는 번호는 맞지 않다고 가정하므로 알 수 있는 번호만으로 구하는 순위는 최저 순위이다.
현재 answer[0]은 알 수 없는 번호의 개수, answer[1]은 알 수 있는 번호 중 당첨 번호와 같은 번호의 개수가 들어있다.
그러므로 answer[0]에 answer[1]을 더해준다.
두번째 for문은 순위를 구하는 for문이다. 두개의 순위를 구하므로 2번 반복한다.
순위를 구하기 위한 순위와 일치번호 개수에서의 규칙은 7에서 맞은 개수를 빼면 된다.
맞은 개수 6 : 순위 = 7 - 6(=맞은 개수) = 1
하지만 1 이하(0, 1)는 6등인 낙첨인데 0일 경우에는 규칙으로 순위를 구할 수 없으므로
if문을 통해 answer[i]가 0일 경우 answer[i]를 6으로 저장한다.
class Solution {
public int[] solution(int[] lottos, int[] win_nums) {
int[] answer = new int[2];
for(int i = 0; i < lottos.length; i++){
if(lottos[i] == 0) answer[0]++;
for(int j = 0; j < win_nums.length; j++){
if(lottos[i] == win_nums[j]) answer[1]++;
}
}
answer[0] += answer[1];
for(int i = 0; i < 2; i++){
if(answer[i] == 0) answer[i] = 6;
else answer[i] = 7 - answer[i];
}
return answer;
}
}
'코딩 테스트 > [JAVA] programmers 코딩 테스트 연습' 카테고리의 다른 글
[No.6] 3진법 뒤집기/ 프로그래머스 코딩 테스트 연습 (0) | 2021.06.03 |
---|---|
[No.5] 약수의 개수와 덧셈 / 프로그래머스 코딩 테스트 연습 (0) | 2021.06.03 |
[No.4] 음양 더하기 / 프로그래머스 코딩 테스트 연습 (0) | 2021.06.02 |
[No.2] 소수 만들기 / 프로그래머스 코딩 테스트 연습 (0) | 2021.06.01 |
[No.1] 내적 / 프로그래머스 코딩 테스트 연습 (0) | 2021.06.01 |
댓글