반응형
프로그래머스 로또의 최고 순위와 최저 순위 - JAVA
문제 설명
- 로또에 낙서가 되어 일부 번호를 알아볼 수 없게 되었음.
- 알아볼 수 없는 번호를 0으로 표기, 당첨 가능한 최고 순위와 처저 순위를 배열에 담아 return.
- 구매한 로또 번호를 담은 배열 lottos, 당첨 번호를 담은 배열 win_nums가 매개변수로 주어짐.
제한 사항
- lottos는 길이 6인 정수 배열입니다.
- lottos의 모든 원소는 0 이상 45 이하인 정수입니다.
- 0은 알아볼 수 없는 숫자를 의미합니다.
- 0을 제외한 다른 숫자들은 lottos에 2개 이상 담겨있지 않습니다.
- lottos의 원소들은 정렬되어 있지 않을 수도 있습니다.
- win_nums은 길이 6인 정수 배열입니다.
- win_nums의 모든 원소는 1 이상 45 이하인 정수입니다.
- win_nums에는 같은 숫자가 2개 이상 담겨있지 않습니다.
- win_nums의 원소들은 정렬되어 있지 않을 수도 있습니다.
문제 풀이
- 당첨번호를 찾기 쉽게 HashSet에 저장.
- 맞은 번호와, 알아볼 수 없는 번호의 수를 저장.
- 최고 순위와 최저 순위를 구해 배열에 담아 return.
소스 코드
import java.util.*;
class Solution {
public int[] solution(int[] lottos, int[] win_nums) {
Set<Integer> set = new HashSet<>(); // 1
for (int n : win_nums) {
set.add(n);
}
int win_cnt = 0; // 2
int zero_cnt = 0;
for (int n : lottos) {
if (set.contains(n)) {
win_cnt++;
}
if (n == 0) {
zero_cnt++;
}
}
return new int[]{Math.min(7 - (win_cnt + zero_cnt), 6), Math.min(7 - win_cnt, 6)}; // 3
}
}
반응형
'알고리즘(Algorithm) > 프로그래머스(Programmers)' 카테고리의 다른 글
[프로그래머스] 완주하지 못한 선수 - JAVA (0) | 2021.10.21 |
---|---|
[프로그래머스] 음향 더하기 - JAVA (0) | 2021.10.20 |
[프로그래머스] 실패율 - JAVA (0) | 2021.10.20 |
[프로그래머스] 모의고사 - JAVA (0) | 2021.10.19 |
[프로그래머스] 소수 만들기 - JAVA (0) | 2021.10.19 |