[프로그래머스/JAVA] 로또의 최고 순위와 최저 순위

2025. 3. 3. 00:41코딩테스트/프로그래머스

문제

https://school.programmers.co.kr/learn/courses/30/lessons/77484

 

문제 정리

값을 알아볼 수 없게 된 로또 용지에서 내가 당첨될 수 있는 최고의 등수와 최저의 등수를 확인해라

학교 다닐 때 숱하게 나왔던 동생이 낙서해서 알아볼 수 없게 된... 어쩌고... 문제였다

for문으로 푸는 방법을 해볼까 했는데 한창 hashSet을 익히는 중이라 이번 문제는 hashSet으로 풀어봤다

작성 코드

import java.util.*;


class Solution {
    public int[] solution(int[] lottos, int[] win_nums) {
         //answer의 크기는 항상 2
        int[] answer = new int[2];


        HashSet<Integer> winArr = new HashSet<>();

        for (int wNum : win_nums) {
            winArr.add(wNum);
        }
        
        int right = 0;// 당첨 번호 
        int zero = 0;// 0일 경우 

        for(int l : lottos) {
            if(l == 0) {
                zero++;
            } else if(winArr.contains(l)) {
                right++;
            } 
        }


        int max = right+zero;//가장 높은 등수는 당첨번호 + 0
        int min = right;//당첨번호만

		//1개만 당첨되면 7등, 아니면 7 - max등
        answer[0] = 7 - max == 7 ? 6: 7 - max;
        answer[1] = 7 - min == 7 ? 6 : 7 -min;

        return answer;
    }
}