https://programmers.co.kr/learn/courses/30/lessons/77484
코딩테스트 연습 - 로또의 최고 순위와 최저 순위
로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호
programmers.co.kr
저는 로또 번호에 어떤 숫자가 나왔는지를 구하는 함수(init),
번호를 맞춘 개수와 0의 개수를 구하는 함수(calCorrrect),
맞춘 개수에 따른 순위를 구하는 함수(changeCntToGrade)로 나눠서 문제를 해결하였습니다.
import java.util.*;
class Solution {
private static void init(int[] win_nums,Set<Integer> set){
for(int num : win_nums){
set.add(num);
}
}
private static int[] calCorrect(int[] lottos,Set<Integer> numbers){
int correctCnt = 0;
int zeroCnt = 0;
for(int lotto : lottos){
if(numbers.contains(lotto)){
correctCnt++;
}else if(lotto == 0){
zeroCnt++;
}
}
return new int[] {correctCnt,correctCnt + zeroCnt};
}
private static int changeCntToGrade(int correctCnt){
if(correctCnt == 6){
return 1;
}else if(correctCnt == 5){
return 2;
}else if(correctCnt == 4){
return 3;
}else if(correctCnt == 3){
return 4;
}else if(correctCnt == 2){
return 5;
}else{
return 6;
}
}
public int[] solution(int[] lottos, int[] win_nums) {
int[] answer = new int[2];
Set<Integer> numbers = new HashSet<>();
init(win_nums,numbers);
int[] result = calCorrect(lottos,numbers);
answer[0] = changeCntToGrade(result[1]);
answer[1] = changeCntToGrade(result[0]);
return answer;
}
}
'알고리즘' 카테고리의 다른 글
프로그래머스 다단계 칫솔 판매(JAVA) (0) | 2022.02.26 |
---|---|
프로그래머스 행렬 테두리 회전하기(JAVA) (0) | 2022.02.26 |
백준 2776번 암기왕 (JAVA) (0) | 2022.02.25 |
백준 1786번 찾기 (JAVA) (0) | 2022.02.24 |
백준 1991번 트리 순회 (JAVA) (0) | 2022.02.23 |