본문 바로가기
프로그래머스 코딩 테스트/level1

로또의 최고 순위와 최저 순위(Java)

by 주성씨 2021. 11. 30.

https://programmers.co.kr/learn/challenges?tab=all_challenges 

 

코딩테스트 연습

기초부터 차근차근, 직접 코드를 작성해 보세요.

programmers.co.kr

 

문제 설명

  1. 로또에 낙서가 되어 일부 번호를 알아볼 수 없게 되었음.
  2. 알아볼 수 없는 번호를 0으로 표기, 당첨 가능한 최고 순위와 처저 순위를 배열에 담아 return.
  3. 구매한 로또 번호를 담은 배열 lottos, 당첨 번호를 담은 배열 win_nums가 매개변수로 주어짐.

제한 사항

  1. lottos는 길이 6인 정수 배열입니다.
  2. lottos의 모든 원소는 0 이상 45 이하인 정수입니다.
    • 0은 알아볼 수 없는 숫자를 의미합니다.
    • 0을 제외한 다른 숫자들은 lottos에 2개 이상 담겨있지 않습니다.
    • lottos의 원소들은 정렬되어 있지 않을 수도 있습니다.
  3. win_nums은 길이 6인 정수 배열입니다.
  4. win_nums의 모든 원소는 1 이상 45 이하인 정수입니다.
    • win_nums에는 같은 숫자가 2개 이상 담겨있지 않습니다.
    • win_nums의 원소들은 정렬되어 있지 않을 수도 있습니다.

문제 풀이

  1. 당첨번호를 찾기 쉽게 HashSet에 저장.
  2. 맞은 번호와, 알아볼 수 없는 번호의 수를 저장.
  3. 최고 순위와 최저 순위를 구해 배열에 담아 return.

 

class Solution {
    public int[] solution(int[] lottos, int[] win_nums) {
        int[] answer = new int[2];
        int matchCount = 0;
        int zeroCount = 0;
        for(int i=0;i<lottos.length;i++){
            if(lottos[i]==0){
                zeroCount++;
            }
            for(int j=0;j<win_nums.length;j++){
                if(lottos[i]==win_nums[j]){
                    matchCount++;
                    break;
                }
            }
        }
        answer[0]=Math.min(7-(matchCount+zeroCount),6);
        answer[1]=Math.min(7-(matchCount),6);
        return answer;
    }
}

 

'프로그래머스 코딩 테스트 > level1' 카테고리의 다른 글

내적(Java)  (0) 2021.12.28
음양 더하기(Java)  (0) 2021.12.28
키패드 누르기(Java)  (0) 2021.12.07
숫자 문자열과 영단어(Java)  (0) 2021.12.07
신규 아이디 추천(Java)  (0) 2021.12.07