코딩테스트/프로그래머스
[프로그래머스 - 77484] 로또의 최고 순위와 최저 순위
haenni
2024. 8. 11. 17:12
👩💻 프로그래머스 Level.1 - 77484
📌 문제
✏️ 로또의 최고 순위와 최저 순위
: https://school.programmers.co.kr/learn/courses/30/lessons/77484


✏️ 문제풀이
:문제를 풀어보자 ~!
class Solution {
public int[] solution(int[] lottos, int[] win_nums) {
int[] answer = new int[2];
int count = 0;
int zero = 0;
for (int i = 0; i < lottos.length; i++) {
//만약 모르는 로또 번호일 경우 zero 카운트 ++
if (lottos[i] == 0) {
zero++;
}
//민우의 로또 번호와 당첨 번호가 일치하는지 카운트
for (int k = 0; k < win_nums.length; k++) {
if (lottos[i] == win_nums[k]) {
count++;
}
}
}
//최소 순위는 count
switch (count) {
case 2:
answer[1] = 5;
break;
case 3:
answer[1] = 4;
break;
case 4:
answer[1] = 3;
break;
case 5:
answer[1] = 2;
break;
case 6:
answer[1] = 1;
break;
default:
answer[1] = 6;
break;
}
//최고 순위는 count에 zero를 추가
switch (count + zero) {
case 2:
answer[0] = 5;
break;
case 3:
answer[0] = 4;
break;
case 4:
answer[0] = 3;
break;
case 5:
answer[0] = 2;
break;
case 6:
answer[0] = 1;
break;
default:
answer[0] = 6;
break;
}
return answer;
}
}
최저 순위는 모르는 번호(0)를 모두 포함하지 않아도 되기 때문에 단순하게 민우의 로또번호와 당첨번호를 비교하여 같은 번호가 있으면 count를 하나씩 늘려주었다.
최고 순위는 모르는 번호(0)를 모두 포함해야하기때문에, 민우의 로또번호에 숫자 0이 존재하면 zero 카운트를 하나씩 늘려주었고, count에 zero 카운트를 더하여 최고 순위를 반환하였다.
✏️ 다른 사람의 풀이를 확인한 후 Develop
: for문을 단순화하고, switch문을 메소드로 만들어 활용
class Solution {
public static int[] solution(int[] lottos, int[] win_nums) {
int[] answer = new int[2];
int count = 0;
int zero = 0;
for (int l : lottos) {
if (l == 0) {
zero++;
continue;
}
for (int w : win_nums) {
if (l == w) {
count++;
}
}
}
answer[0] = grade(count + zero);
answer[1] = grade(count);
return answer;
}
public static int grade(int n) {
switch (n) {
case 2:
return 5;
case 3:
return 4;
case 4:
return 3;
case 5:
return 2;
case 6:
return 1;
default:
return 6;
}
}
for문을 단순화 하였고 기존에 풀었던 문제 방식은 switch 문을 두 번 돌렸는데, grade라는 메소드로 따로 순위를 정해주는 메서드를 생성
