[Programmers] 2021 Dev-Matching: 웹 백엔드 개발 - 로또의 최고 순위와 최저 순위

zzenee·2022년 4월 26일
0

Algorithm&Coding-test

목록 보기
3/30
post-thumbnail

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

Problem

Code

import java.util.*;
class Solution {
    public int[] solution(int[] lottos, int[] win_nums) {
        int[] answer = new int[2];
        
        // 오름차순 정렬
        Arrays.sort(lottos);
        Arrays.sort(win_nums);
        
        int p1 = 0, p2 = 0; // 각각 lottos, win_nums의 위치(인덱스)
        int invisibleCnt = 0; // 번호가 0인 경우 카운트
        int matched = 0; // 번호가 같은 경우 카운트
        while(p1 < 6 && p2 <6) {
            if (lottos[p1] == 0) { 
                invisibleCnt++;
                p1++;
            } else {
                if (lottos[p1] == win_nums[p2]) { 
                    matched++;
                    p1++;
                    p2++;
                } else if (lottos[p1] < win_nums[p2]) {
                    p1++;
                } else {
                    p2++;   
                }
            }
        }

        // 최저 등수부터 판별
        answer[1] = 6 - matched + 1; // 등수: 6 - 맞힌 갯수 + 1
        if (answer[1] > 6) answer[1] =6; // 등수가 6보다 큰 경우 모두 6으로 변경

        // 최고 등수 판별 (맞힌 갯수: 6 - matched)
        if (invisibleCnt <= (6 - matched)) {
            matched += invisibleCnt; // 모르는 갯수만큼 당첨번호로 변경 가능
        } else { 
            matched += (6 - matched); // 못맞힌 갯수만큼 당첨번호로 변경 가능
        }
        answer[0] = 6 - matched + 1;
        if (answer[0] > 6) answer[0] =6;
        
        return answer;
    }
}
profile
꾸준히

0개의 댓글