IT/Java

[프로그래머스, Level 1] 로또의 최고 순위와 최저 순위(JAVA)

배당 줍는 다람쥐 2022. 8. 1. 15:03
반응형

안녕하세요.

배당 줍는 다람쥐입니다.

 

오늘 업로드하는 문제는 프로그래머스 Level 1, 로또의 최고 순위와 최저 순위입니다.

그러면 오늘도 문제 풀이 시작하겠습니다.


문제

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제 내용은 링크 참고 부탁드립니다. 


문제풀이

핵심포인트

  • 최고 순위 = 맞춘 개수 + 값이 0인 개수( 0은 당첨 번호로 변경이 가능하기 때문 )
  • 최저 순위 = 맞춘 개수 ( 맞춘 개수의 등수보다 아래로는 내려갈 수 없다. )

코드

import java.util.*;

class Solution {
    public int[] solution(int[] lottos, int[] win_nums) {
        int matchCnt = 0; // 0이 아닌 숫자 중에 당첨 번호와 일치하는 개수
        int zeroCnt = 0; // 0의 개수
        
        // 1. 0이 아닌 숫자 중에 당첨 번호와 일치하는 개수 = 최저 순위
        // 2. 0은 당첨 번호로 변경이 가능하기 때문에, 최고 순위 = matchCnt + zeroCnt가 된다.
        for(int l : lottos){
            if(l == 0) zeroCnt++;
            else{
                for(int w : win_nums){
                    if(l == w){
                        matchCnt++;
                        break;
                    }
                }
            }
        }
        
        int min = matchCnt;
        int max = matchCnt + zeroCnt;
        
        int[] answer = {Math.min(7-max, 6), Math.min(7-min, 6)};
        
        return answer;
    }
}

 

반응형