본문 바로가기
프로그래머 ,백준, 유튜브, 문제

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

by 리승우 2022. 9. 26.

[필요개념]

> 단순화, 그게 제일 필요함. 이번에 푼 문제는 너무 돌아간 경향이 있음 (하단코드 참조)

 

[알게된 것]

> 특정 값을 Collections 객체에서 개수를 세는법

이 코드 진짜 깔끔하니 참고하자
//         int[] answer = new int[2];
//         int cnt1 = 0;
//         int cnt2 = 0;

			로또번호 for문		 
//         for(int i : lottos) {
            만약 0이 있을 경우 카운트 게시하고 다시 for문 처음으로 돌아옴
//             if(i == 0) {
//                 cnt1++;
//                 continue;
//             }

			만약 0이 아닐 경우, win for문으로 하나하나 추출해 lottos에 있는 값인지 카운트 게시
//             for(int j : win_nums) {
//                 if(i == j) cnt2++;
//             }
//         }


//         answer[0] = getGrade(cnt1+cnt2);
//         answer[1] = getGrade(cnt2);

//         return answer;
//     }

 

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;

class Solution {
    public int[] solution(int[] lottos, int[] win_nums) {
        int correctMax = 0;
        int correctMin = 0;

        //ArrayList, HashSet생성
        HashSet<Integer> lottoset = new HashSet<>();
        ArrayList<Integer> winset = new ArrayList<>();
        ArrayList<Integer> zeroCount = new ArrayList<>();

        //각 자료구조에 값 넣기
        for(int lotto:lottos){
            lottoset.add(lotto);
        }

        for(int win:win_nums){
            winset.add(win);
        }

        for(int lotto:lottos){
            zeroCount.add(lotto);
        }

        //win로또에 있는 숫자들이 lottoset 집합에 몇 개 있는지 세기
        for(int i=0; i<winset.size(); i++){
            if(lottoset.contains(winset.get(i))){
                correctMin++;
            }
        }

        //zero 개수 세기위한 메소드
        correctMax = Collections.frequency(zeroCount,0);

        //zero 개수 + win에 속한 숫자들 센 것들 개수
        correctMax += correctMin;

        int[] answer = {Math.min(7-correctMax,6),Math.min(7-correctMin,6)};

        return answer;
    }
}

    public class Hello {
        public static void main(String[] args) {
            Solution test = new Solution();
            int [] p = new int[]{44,1,0,0,31,25};
            int [] s = new int[]{31,10,45,1,6,19};

            System.out.println(test.solution(p,s));
        }
    }

댓글