입출력 예
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] |
입출력 예 설명
입출력 예 #1
문제 예시와 같습니다.
입출력 예 #2
알아볼 수 없는 번호들이 아래와 같았다면, 1등과 6등에 당첨될 수 있습니다.
당첨 번호 | 38 | 19 | 20 | 40 | 15 | 25 | 결과 |
최고 순위 번호 | 0 -> 38 | 0 -> 19 | 0 -> 29 | 0 -> 40 | 0 -> 15 | 0 -> 25 | 6개 번호 일치, 1등 |
최저 순위 번호 | 0 -> 21 | 0 -> 22 | 0 -> 23 | 0 -> 24 | 0 -> 26 | 0 -> 27 | 0개 번호 일치, 6등 |
입출력 예 #3
민우가 구매한 로또의 번호와 당첨 번호가 모두 일치하므로, 최고 순위와 최저 순위는 모두 1등입니다.
1. 실제로 사용되는 로또 순위의 결정 방식과는 약간 다르지만, 이 문제에서는 지문에 명시된 대로 로또 순위를 결정하도록 합니다.
- 내 풀이
import java.util.*;
class Solution {
public int[] solution(int[] lottos, int[] win_nums) {
int[] answer = {};
// 최고 순위 , 최저 순위 번호
answer = new int[2];
// 로또 당첨 개수에 따른 순서
int[] equalNum = {0, 6, 5, 4, 3, 2};
// 일치하는 로또 번호 개수
int equalCheck = 0;
// 0으로 체크된 로또 번호 개수
int zeroCheck = 0;
Arrays.sort(lottos);
Arrays.sort(win_nums);
for (int i = 0; i < lottos.length; i++) {
for (int j = 0; j < win_nums.length; j++) {
// 자신의 로또 번호와 당첨 로또 번호가 같으면 ++
if (lottos[i] == win_nums[j]) {
equalCheck++;
}
}
// 자신의 로또 번호에 0 이 있다면 ++
if (lottos[i] == 0) {
zeroCheck++;
}
}
// 0이 6개면 최고 1 , 최저 6
if (zeroCheck == 6) {
answer[0] = 1;
answer[1] = 6;
} else if(equalCheck != 0 || zeroCheck != 0){
// 일치하는 번호의 등수와 (일치하는 번호 + 0번의 개수)의 등수
for (int i = 0; i < equalNum.length; i++) {
if (equalCheck == equalNum[i]) {
answer[0] = i;
}
// 일치하는 번호가 1개인 경우
if(equalCheck == 1){
answer[0] = 6;
}
if ((equalCheck + zeroCheck) == equalNum[i]) {
answer[1] = i;
}
}
}else {
// 일치하는 번호가 하나도 없을 경우
answer[0] = 6;
answer[1] = 6;
}
// 최고,최저 순위로 나타내기 위한 sort
Arrays.sort(answer);
return answer;
}
}
switch문을 사용안하고 간단하게 풀어보려다가 되려 더 길어진거 같다
정리만 좀 더 하면 1/3은 줄어들거같긴한데...
- 다른 사람 풀이
class Solution {
public int[] solution(int[] lottos, int[] win_nums) {
int[] answer = new int[2];
int cnt1 = 0;
int cnt2 = 0;
for(int i : lottos) {
if(i == 0) {
cnt1++;
continue;
}
for(int j : win_nums) {
if(i == j) cnt2++;
}
}
answer[0] = getGrade(cnt1+cnt2);
answer[1] = getGrade(cnt2);
return answer;
}
public int getGrade(int n) {
switch(n) {
case 6 :
return 1;
case 5 :
return 2;
case 4 :
return 3;
case 3 :
return 4;
case 2 :
return 5;
default :
return 6;
}
}
}
'프로그래머스 > [프로그래머스 - JAVA] Lv.1' 카테고리의 다른 글
[프로그래머스 - JAVA] 명예의 전당(1) (0) | 2023.04.08 |
---|---|
[프로그래머스 - JAVA] 과일 장수 (0) | 2023.04.07 |
[프로그래머스 - JAVA] 모의고사 (0) | 2023.04.07 |
[프로그래머스 - JAVA] 폰켓몬 (0) | 2023.04.06 |
[프로그래머스 - JAVA] 2016년 (0) | 2023.04.06 |
댓글