알고리즘 공부
99클럽 코테 스터디 39일차 TIL
HD9504
2024. 8. 29. 20:47
로또 순위 계산 문제 풀이
문제 설명
이 문제는 로또 번호를 맞추는 게임에서 주어진 로또 번호와 당첨 번호를 비교하여 가능한 최고 순위와 최저 순위를 구하는 문제입니다. 로또 번호는 총 6개로 구성되며, 일부 번호는 0으로 표시되어 있어, 이 번호는 어떤 숫자와도 매칭될 수 있습니다. 이 문제는 이러한 로또 번호와 당첨 번호를 비교하여, 당첨될 수 있는 최고 순위와 최저 순위를 계산하는 것입니다.
나의 풀이
아래 코드는 주어진 로또 번호(lottos
)와 당첨 번호(win_nums
)를 비교하여 가능한 최고 순위와 최저 순위를 계산하는 자바 프로그램입니다.
class Solution {
public int[] solution(int[] lottos, int[] win_nums) {
int result = 0;
int countZero = 0;
for(int i = 0; i<lottos.length; i++){
int lottosNumber = lottos[i];
if(lottosNumber != 0){
for(int subIndex = 0; subIndex < win_nums.length; subIndex++){
int num = win_nums[subIndex];
if(num == lottosNumber){
result += 1;
}
}
} else {
countZero += 1;
}
}
int best = (7 - (result + countZero)) < 6 ? (7 - (result + countZero)) : 6;
int worst = (7 - result) < 6 ? (7 - result) : 6;
int[] answer = new int[] {best, worst};
return answer;
}
}
풀이 설명
변수 초기화
result
: 당첨 번호와 일치하는 로또 번호의 개수를 저장합니다.countZero
: 로또 번호 중 0의 개수를 세어 저장합니다. 0은 어떤 숫자로도 변환될 수 있으므로, 당첨 번호를 맞출 가능성을 높이는 요소입니다.
로또 번호 비교
- 주어진
lottos
배열을 순회하면서, 각 로또 번호를win_nums
배열의 당첨 번호와 비교합니다. - 로또 번호가 0이 아닌 경우, 당첨 번호와 비교하여 일치하는 번호가 있으면
result
를 증가시킵니다. - 로또 번호가 0인 경우,
countZero
를 증가시켜 0의 개수를 카운트합니다.
- 주어진
최고 순위와 최저 순위 계산
- 최고 순위(
best
): 당첨된 숫자(result
)에 0의 개수(countZero
)를 더한 결과를 바탕으로 계산합니다. 0이 모두 당첨 번호로 변환될 수 있으므로, 최대한 많은 번호를 맞출 수 있는 경우의 순위입니다. - 최저 순위(
worst
): 당첨된 숫자(result
)만을 고려하여 계산합니다. 이 경우 0은 모두 당첨되지 않은 번호로 간주합니다. - 순위는
7 - (맞춘 번호 수)
로 계산되며, 맞춘 번호가 없을 경우 순위는 6위로 고정됩니다.
- 최고 순위(
결과 반환
- 계산된 최고 순위와 최저 순위를 배열로 반환합니다.
예제 설명
예를 들어, 로또 번호가 [44, 1, 0, 0, 31, 25]
이고, 당첨 번호가 [31, 10, 45, 1, 6, 19]
인 경우:
- 0을 제외한 로또 번호 중 맞춘 번호는 2개 (
1
과31
)입니다. - 최고 순위는 2개의 맞춘 번호에 2개의 0을 더하여 4개의 번호를 맞춘 경우로, 순위는 3위입니다.
- 최저 순위는 2개의 맞춘 번호만 고려하여 5위가 됩니다.
- 따라서 결과는
[3, 5]
가 됩니다.