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

권권·2023년 3월 27일
0

Java 예제🛒

목록 보기
11/14
post-thumbnail

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

생각한 것

  1. Set을 통해서 값이 들어왔을 때 이미 있는 값이라면 맞춘 개수를 ++ 해주는 것
  2. 당첨 순위를 리턴해주는 것 (맞춘개수 6개 ==> 1 리턴) ...
  3. 전부 안보일 경우와 다 보일 경우 리턴값을 설정해줘야함

코드

import java.util.*;
class Solution {
    public int[] solution(int[] lottos, int[] win_nums) {
        int[] answer = new int[2];
        // 맞은 갯수
        int win = 0;
        
        // 등수를 리턴함
        // (0 , 6)
        // (1 , 6)
        // (2 , 5)
        // (3 , 4)
        // (4 , 3)
        // (5 , 2)
        // (6 , 1)
        
        // 0 의 갯수 확인
        int num_0 = 0;
        for(int i = 0 ; i < lottos.length ; i++){
            if(lottos[i] == 0){
                num_0++;
            }
        }
        // set 생성 후 win_nums 넣기
        // Set<Integer> set = new HashSet<>(Arrays.asList(win_nums));
        Set<Integer> set = new HashSet<>();
        for(int i = 0 ; i < win_nums.length ; i++){
            set.add(win_nums[i]);
        }
        
        // 하나씩 넣어보기 
        for(int i = 0 ; i < lottos.length ; i++){
            if(set.contains(lottos[i])){
                win++;
            }
        }
        //최대
        // 하나도 안맞고 0이 없을 때 6을 줘야함
        if(win == 0 && num_0 == 0){
            answer[0] = 6;
        } else{
        answer[0] = 7 - (win + num_0);    
        }
        
        //최소
        if(win == 0){
            answer[1] = 6;
        }else{
        answer[1] = 7 - win;    
        }
 
        return answer;
    }
}

마지막 산출에서 좀 막혔던 문제였다.
테스트케이스 몇개가 자꾸 틀려서 확인해보니 산출해줄 때 여러 변수들을 고려해주지 못했다.
0 이 다 있는 경우, 0이 없는 경우 등등

profile
안녕하세요

0개의 댓글