(Python, Java) 프로그래머스 - 로또의 최고 순위와 최저 순위

[문제 링크]

Python 풀이

def solution(lottos, win_nums):
    win = set(win_nums)
    answer = []
    blank = 0
    cnt = 0
    for lotto in lottos:
        if lotto in win:
            cnt += 1
        elif lotto == 0:
            blank += 1

    top = cnt + blank

    if top <= 1:
        answer.append(6)
    else:
        answer.append(7 - top)

    if cnt <= 1:
        answer.append(6)
    else:
        answer.append(7 - cnt)
    
    return answer

Java 풀이

import java.util.*;

class Solution {
    public int[] solution(int[] lottos, int[] win_nums) {
        int[] answer = new int[2];
        HashSet<Integer> myNum = new HashSet<>();
        int zero=0;
        int match=0;
        int maxRank;
        int minRank;

        for (int lotto : lottos) {
            if (lotto == 0){
                zero+=1;
            }
            else{
                myNum.add(lotto);
            }
        }

        for (int win_num : win_nums) {
            if (myNum.contains(win_num)){
                match+=1;
            }
        }

        maxRank = 7 - (match+zero);
        minRank = 7- match;
        if(maxRank>6)
            maxRank = 6;
        if (minRank >6)
            minRank = 6;

        answer[0] = maxRank;
        answer[1] = minRank;
        return answer;
    }

    public static void main(String[] args) {
        Solution s = new Solution();
        int[] lotto = {44, 1, 0, 0, 31, 25};
        int[] win = {31, 10, 45, 1, 6, 19};
        s.solution(lotto,win);
    }
}

© 2021. By Backtony