[프로그래머스] 코딩 테스트 연습 - 로또의 최고 순위와 최저 순위(Java)

수경·2022년 11월 27일
0

problem solving

목록 보기
64/174

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

풀이

  1. 당첨된 숫자의 개수(당첨번호와 로또번호가 일치) ➡️ 최저 순위

  2. 0의 개수 + 당첨된 숫자의 개수 ➡️ 최고 순위

  3. rank 배열
    인덱스 ➡️ 당첨된 숫자의 개수
    값 ➡️ 순위
    (예시: 당첨된 숫자의 개수가 6개면 rank[6] = 1, 1위)


삽질

stream 에서 anyMatch()를 처음 써봤다!

이거 몰라서 for문 돌렸는데 ㅎ.............................................

다른 분이 anyMatch() 쓰신 걸 보고 나도 바꿨따

딱히 삽질은 안 함


코드

import java.util.Arrays;

public class Lotto {
	public int[] solution(int[] lottos, int[] win_nums) {
		int[] rank = {6, 6, 5, 4, 3, 2, 1};
		int zeroCnt = (int)Arrays.stream(lottos).filter(l -> l == 0).count();
		int winCnt = (int)Arrays.stream(lottos).filter(l -> Arrays.stream(win_nums).anyMatch(w -> w == l)).count();
		return new int[]{rank[winCnt + zeroCnt], rank[winCnt]};
	}

	public static void main(String[] args) {
		Lotto lotto = new Lotto();
		System.out.println(Arrays.toString(lotto.solution(new int[]{44, 1, 0, 0, 31, 25}, new int[]{31, 10, 45, 1, 6, 19})));   // [3, 5]
		System.out.println(Arrays.toString(lotto.solution(new int[]{0, 0, 0, 0, 0, 0}, new int[]{38, 19, 20, 40, 15, 25})));    // [1, 6]
		System.out.println(Arrays.toString(lotto.solution(new int[]{45, 4, 35, 20, 3, 9}, new int[]{20, 9, 3, 45, 4, 35})));    // [1, 1]
	}
}
profile
어쩌다보니 tmi뿐인 블로그😎

0개의 댓글