프로그래머스 lv1 로또의 최고 순위와 최저 순위

namkun·2022년 6월 30일
0

코딩테스트

목록 보기
5/79

문제

문제 링크

풀이

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을 사용하지 않고도 풀 수 있는 방법이 여러가지 있는 것을 확인했다.
profile
개발하는 중국학과 사람

0개의 댓글