-
문제
해당 문제는 가려진 로또 숫자와 당첨 숫자가 주어졌을 때 가능한 최고 등수와 최저 등수를 출력하는 문제다.
조건
1등 6개가 모두 일치, 2등 5개가 일치... 5등 2개가 일치, 6등 그 외
0인 경우 가려진 로또 숫자
최고 순위와 최저 순위 순으로 보여준다
풀이
해당 문제는 2가지 방법을 생각하였는데 첫 번째는 set를 이용하여 contains 통해 값이 있는지 없는지 체크하는 방법이었고, 두 번째의 경우 내가 해결했던 2진 탐색을 이용하는 방법이었다.
이진 탐색을 위해 나의 로또 번호를 정렬하고 반복문을 돌면서 먼저 0인 개수를 체크하고, 이진 탐색으로 값이 0보다 크거나 같은 값을(해당 배열에 이미 존재) 체크하여 최종 적으로 vaule 배열에 등수를 저장하고 리턴하는 방식으로 문제를 해결했다.
코드
import java.util.Arrays; class Solution { public int[] solution(int[] lottos, int[] win_nums) { int[] answer = new int[2]; int max = 0, min = 0; Arrays.sort(win_nums); for (int i = 0; i < 6; i++) { if(lottos[i] == 0) { max++; }else if (Arrays.binarySearch(win_nums, lottos[i]) >= 0) min++; } int[] value = new int[] {6,6,5,4,3,2,1}; answer[0] = value[min + max]; answer[1] = value[min]; return answer; } }
728x90'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스 가장 큰 수 JAVA (0) 2022.03.08 프로그래머스 K번째수 JAVA (0) 2022.03.08 프로그래머스 기능개발 JAVA (0) 2022.03.02 프로그래머스 해시 완주하지 못한 선수 JAVA (0) 2021.10.31 프로그래머스 해시 전화번호 목록 JAVA (0) 2021.10.31 댓글