-
코딩테스트 연습 - 로또의 최고 순위와 최저 순위
로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호
programmers.co.kr
문제
해당 문제는 가려진 로또 숫자와 당첨 숫자가 주어졌을 때 가능한 최고 등수와 최저 등수를 출력하는 문제다.
조건
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; } }
GitHub - JUNGSOONIL/JAVA: JAVA 소스 코드
JAVA 소스 코드. Contribute to JUNGSOONIL/JAVA development by creating an account on GitHub.
github.com
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 댓글