class Solution {
public int[] solution(int[] lottos, int[] win_nums) {
int max, min;
int zeroCount = 0;
int winningCount = 0;
// lottos의 값이 win_nums에 몇 개 있는지, 0의 값이 몇 개 있는지 확인
for(int num : lottos){
if(num == 0){
zeroCount++;
continue;
}
for(int num2 : win_nums){
if(num == num2){
winningCount++;
continue;
}
}
}
// 0이 모두 당첨일 때 / 모두 낙첨일 때 케이스 연산
min = 7- winningCount; // 최소 당첨 시 등수
max = 7- (winningCount + zeroCount); // 최대 당첨 시 등수
// 2개 이하 당첨 시 6등
if(max == 7)
max = 6;
if(min == 7)
min = 6;
// 정답 배열에 담고, 리턴
int[] answer = {max, min};
return answer;
}
}
테스트 2 〉 통과 (0.02ms, 79.3MB)
테스트 3 〉 통과 (0.02ms, 79.4MB)
테스트 4 〉 통과 (0.02ms, 79.2MB)
테스트 5 〉 통과 (0.02ms, 74.2MB)
테스트 6 〉 통과 (0.03ms, 76.1MB)
테스트 7 〉 통과 (0.02ms, 67.6MB)
테스트 8 〉 통과 (0.01ms, 77.9MB)
테스트 9 〉 통과 (0.02ms, 72.3MB)
테스트 10 〉 통과 (0.01ms, 74.8MB)
테스트 11 〉 통과 (0.02ms, 74MB)
테스트 12 〉 통과 (0.01ms, 77.7MB)
테스트 13 〉 통과 (0.02ms, 76MB)
테스트 14 〉 통과 (0.01ms, 75.1MB)
테스트 15 〉 통과 (0.02ms, 66.6MB)
Map을 사용하여 0이 아닌 로또의 값을 넣은 map을 생성
map.containsKey(winNum)
을 사용하여 값을 포함하는지 체크
import java.util.HashMap;
import java.util.Map;
class Solution {
public int[] solution(int[] lottos, int[] win_nums) {
Map<Integer, Boolean> map = new HashMap<Integer, Boolean>();
int zeroCount = 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};
}
}
1) case 사용
2) rank를 배열에 미리 담아두기
3) Math.min 사용
int[] answer = {Math.min(7 - max, 6), Math.min(7 - min, 6)};
속도는 확실히 떨어진다...
class Solution {
public int[] solution(int[] lottos, int[] winNums) {
return LongStream.of(
(lottos.length + 1) - Arrays.stream(lottos).filter(l -> Arrays.stream(winNums).anyMatch(w -> w == l) || l == 0).count(),
(lottos.length + 1) - Arrays.stream(lottos).filter(l -> Arrays.stream(winNums).anyMatch(w -> w == l)).count()
)
.mapToInt(op -> (int) (op > 6 ? op - 1 : op))
.toArray();
}
}
TIL 너무 잘 작성해주셨군요! 앞으로도 꾸준히 작성해보아요~!