

내가 작성한 코드
import java.util.*;
class Solution {
public int[] solution(int[] lottos, int[] win_nums) {
// 당첨 번호를 Set에 저장하여 빠르게 비교할 수 있게 함
Set<Integer> winSet = new HashSet<>();
for (int num : win_nums) {
winSet.add(num);
}
int zeroCount = 0; // 알아볼 수 없는 숫자 (0)의 개수
int matchCount = 0; // 실제로 당첨 번호와 일치한 숫자의 개수
for (int num : lottos) {
if (num == 0) {
zeroCount++;
} else if (winSet.contains(num)) {
matchCount++;
}
}
// 최고 순위는 0까지 모두 맞췄다고 가정한 경우
int maxMatch = matchCount + zeroCount;
// 최저 순위는 실제 일치한 것만 본 경우
int minMatch = matchCount;
// 최고 순위와 최저 순위를 배열로 반환
return new int[] { getRank(maxMatch), getRank(minMatch) };
}
// 맞은 개수(count)에 따른 순위 계산
private int getRank(int count) {
// 6개 → 1등, 5개 → 2등 ... 2개 → 5등
if (count >= 2) {
return 7 - count;
}
// 0개 또는 1개 맞으면 6등
return 6;
}
}
다른 사람의 코드
import java.util.*;
class Solution {
public int[] solution(int[] lottos, int[] win_nums) {
Map<Integer, Boolean> map = new HashMap<Integer, Boolean>(); // 번호와 존재 여부를 저장하는 맵
int zeroCount = 0; // 0의 개수를 세기 위한 변수
for(int lotto : lottos) {
if(lotto == 0) {
zeroCount++;
continue;
}
map.put(lotto, true);
}
int sameCount = 0; // 당첨 번호와 일치하는 번호의 개수를 세기 위한 변수
for(int winNum : win_nums) {
if(map.containsKey(winNum)) sameCount++;
}
int maxRank = 7 - (sameCount + zeroCount);
int minRank = 7 - sameCount;
// 낙첨 처리
if(maxRank > 6) maxRank = 6;
if(minRank > 6) minRank = 6;
return new int[] {maxRank, minRank};
}
}
Share article