반응형
77484
https://school.programmers.co.kr/learn/courses/30/lessons/77484?language=java#fn1
풀이
📌로또의 수는 45개이고, 각 배열(lottos, win_nums)의 길이는 6개로 고정입니다.
📌알아야 할 것은 "몇 개를 맞췄느냐?", "몇 개가 낙서되었느냐?" 입니다.
위 두 개의 핵심으로 생각해보면
많이 맞춘 경우는 낙서된 수가 모두 당첨 번호라고 가정하고 [맞춘 개수 + 낙서된 수]
많이 맞추지 못한 경우는 낙서된 수가 모두 꽝이라고 가정하고 [맞춘 개수] 입니다.
📝풀이1
public int[] solution(int[] lottos, int[] win_nums) {
int count_zero = 0, count_hit = 0; // 낙서된 수(zero), 당첨 번호 수(hit)
for(int lotto : lottos) {
if(lotto == 0) count_zero++; // 낙서된 수 증가
for(int win_num : win_nums) {
if(lotto == win_num) {
count_hit++; // 당첨 번호 수 증가
}
}
}
return new int[] { getLottoRanking(count_hit+count_zero), getLottoRanking(count_hit) };
}
public int getLottoRanking(int hit) {
switch(hit) {
case 6: return 1;
case 5: return 2;
case 4: return 3;
case 3: return 4;
case 2: return 5;
default: return 6;
}
}
🔨getLottoRanking(int hit) : 당첨번호를 맞춘 개수에 따라 순위를 반환
배열 lottos를 순회하며 [낙서된 수]와 [당첨 번호 수]를 증가시킵니다.
🎈최고 순위는 낙서된 수가 모두 당첨 번호 수라고 가정해야 하기 때문에 [낙서된 수 + 당첨 번호 수] 입니다.
🎈최저 순위는 낙서된 수가 모두 꽝이라고 가정해야 하기 때문에 [당첨 번호 수] 입니다.
⚡️테스트 케이스 처리속도: 0.01 ~ 0.02ms
📝풀이2
public int[] solution(int[] lottos, int[] win_nums) {
int count_zero = 0, count_hit = 0; // 낙서된 수(zero), 당첨 번호 수(hit)
for(int lotto : lottos) {
if(lotto == 0) count_zero++; // 낙서된 수 증가
for(int win_num : win_nums) {
if(lotto == win_num) {
count_hit++; // 당첨 번호 수 증가
}
}
}
int rank_high = 7 - (count_hit+count_zero);
int rank_low = 7 - count_hit;
rank_high = rank_high > 6 ? 6 : rank_high;
rank_low = rank_low > 6 ? 6 : rank_low;
return new int[] { rank_high, rank_low };
}
기본적으로 낙서된 수, 당첨 번호 수 체크하는 부분은 같습니다.
로또 순위는 당첨 번호 수에 일정하게 매칭됩니다.
정해진 패턴이 있다는 것은 공식화 시킬 수 있습니다.
1위 -> 6개
2위 -> 5개
...
5위 -> 2개
6위(나머지) -> 1개 이하
7-(당첨 번호 수) = 순위
7 - 6 = 1위
7 - 5 = 2위
...
7 - 2 = 5위
7 - 1 = 6위
7 - 0 = 7위
⚡️테스트 케이스 처리속도: 0.01 ~ 0.02ms
반응형
'Algorithm > Java' 카테고리의 다른 글
프로그래머스 - JadenCase 문자열 만들기 java :: 12951 (0) | 2022.07.12 |
---|---|
프로그래머스 - N개의 최소공배수 java (0) | 2022.07.11 |
프로그래머스 - 신고 결과 받기 java :: 2022 KAKAO BLIND RECRUITMENT (0) | 2022.07.09 |
프로그래머스 - 숫자 문자열과 영단어 java :: 2021 카카오 채용연계형 인턴십 (0) | 2022.07.08 |
프로그래머스 - 키패드 누르기 java :: 2020 카카오 인턴십 (0) | 2022.07.08 |