1. 문제 풀이 아이디어
Set
자료형에 당첨 번호를 저장한 후,0
을 제외한 로또 번호 중 일치하는 숫자와 일치하지 않는 숫자를 구해 문제를 해결할 수 있다.
2. 나의 정답 코드
class Solution {
public int[] solution(int[] lottos, int[] win_nums) {
Set<Integer> set = new HashSet<>();
for (int i : win_nums) {
set.add(i);
}
int same = 0;
int diff = 0;
for (int i : lottos) {
if (i == 0) continue;
if (set.contains(i)) same++;
else diff++;
}
return new int[]{Math.min(1 + diff, 6), Math.min(6, 7 - same)};
}
}
3. 정리
for
문을 사용해 당첨 번호를set
에 저장한다.
- 이후,
for
문을 돌며 로또 번호가 0이면 건너뛰고,set
에 있으면same
을 증가시키고 없으면diff
를 증가시킨다.
- 최대 등수는
1 + diff
, 최소 등수는7 - same
으로 계산되며, 결과가6
을 초과할 경우를 고려해min
메서드를 사용해 최대6
으로 제한하여 정답을 구할 수 있다.
Share article