문제
문제 링크
풀이
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
class Solution {
public int[] solution(int[] lottos, int[] win_nums) {
int[] answer = new int[2];
int zeroCount = 0;
int matchCount = 0;
List<Integer> list = Arrays.stream(win_nums).boxed().collect(Collectors.toList());
for (int num : lottos) {
if (list.contains(num)) {
matchCount++;
}
if (num == 0) {
zeroCount++;
}
}
answer[0] = getResult(matchCount, zeroCount);
answer[1] = getResult(matchCount, 0);
return answer;
}
public int getResult(int matchCnt, int zeroCnt){
if(zeroCnt + matchCnt < 2){
return 6;
} else {
return 7 - (matchCnt + zeroCnt);
}
}
}
소감
- 통과는 하지만 성능이 좋지 못하다.
- int 배열은 Arrays.asList를 통해서 바꾸면 Integer로 변경이 안되어서 int[]를 인자로 갖는 list가 된다.
- 그렇기에, 위와 같이
Arrays.stream
을 통해서 바꿔야만 했다.
- 굳이 stream을 사용하지 않고도 풀 수 있는 방법이 여러가지 있는 것을 확인했다.