프로그래머스 문제 풀이

Lv1 - 로또의 최고 순위와 최저 순위

Dotae1 2025. 2. 19. 19:28

import java.util.HashSet;
import java.util.Set;

class Solution {
    public int[] solution(int[] lottos, int[] win_nums) {
        Set<Integer> winSet = new HashSet<>(); //당첨 번호 저장
        for(int num : win_nums){
            winSet.add(num);
        }

        int zeroCount = 0; //0의 개수
        int matchCount = 0; // 맞춘 개수

        for (int num : lottos){
            if( num ==0){ //lottos가 0이면 zeroCount++
                zeroCount++;
            } else if(winSet.contains(num)){
                matchCount++; //0이 아니고 당첨번호에 포함되어 있다면 matchCount++
            }
        }

        int maxRank= getRank(zeroCount + matchCount); // 최고순위는 0개수 + 맞은 개수
        int minRank = getRank(matchCount); // 최저순위는 맞은 개수

        return new int[]{maxRank, minRank}; //출력값은 최고순위, 최저순위

    }
    public int getRank(int count){
        return count >=2 ? 7- count : 6; // 맞은 개수가 2개 이상이면 7 - count 이고 아니면 6 반환 조건문
    }
}

 

초반에 이중 for문을 사용하여 0의 개수, 맞춘 개수를 파악하고 코드를 짜보려고했지만 쉽지않았다. 그래서 ChatGpt의 도움을 조금 받았다. 이중for문으로 사용을 하는것보다 Set, Hash를 이용하고, Rank메서드를 이용하여 코드를 완성시킬 수 있었다. 지금까지의 얕은 지식으로 모든 문제를 for문, if문을 사용하여 해결하려고 했었는데 이런 방법도 있다는 것을 알 수 있었고 다른 문제들을 풀 때도 조금 수월하게 풀 수 있을것 같다.