매일 조금씩

프로그래머스 level1 : 로또의 최고 순위와 최저 순위 - JAVA 본문

알고리즘

프로그래머스 level1 : 로또의 최고 순위와 최저 순위 - JAVA

mezo 2022. 2. 21. 20:11
728x90
반응형

 

 

코딩테스트 연습 - 로또의 최고 순위와 최저 순위 | 프로그래머스 (programmers.co.kr)

 

코딩테스트 연습 - 로또의 최고 순위와 최저 순위

로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호

programmers.co.kr

 

1. IntStream

import java.util.stream.IntStream;

class Solution {
    public static int rank(int num) {
        if (num >= 2)
            return 7 - num;
        return 6;
    }
    
    public int[] solution(int[] lottos, int[] win_nums) {
        int zeroCount = 0;
        int correctCount = 0;
        for (int lotto : lottos) {
            if (lotto == 0) {
                zeroCount += 1;
            } else {
                if (IntStream.of(win_nums).anyMatch(x -> x == lotto))
                    correctCount += 1;
            }
        }
        int[] answer = {rank(zeroCount + correctCount), rank(correctCount)};
        return answer;
    }
}

 

2. LongStream, 람다 표현식

import java.util.Arrays;
import java.util.stream.LongStream;

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();
    }
}

 

728x90
반응형