[프로그래머스] 로또의 최고 순위와 최저 순위 Java

Nari.·2021년 4월 28일
0

Java-Algorithm

목록 보기
1/4

2021 Dev-Matching:웹 백엔드 개발자(상반기)

📃 로또의 최고 순위와 최저 순위

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



📝 나의 풀이

< 입력 >
lottos = [44, 1, 0, 0, 31, 25]
win_nums = [31, 10, 45, 1, 6, 19]

< 출력 >
answer = [3, 5]


이중 for문을 돌면서 0의 개수를 세고, lottos 배열과 win_nums배열에 같은 값이 있는지 확인하면 되겠다고 생각했다.

그리고 sort를 써도 되나 궁금해서 약간 쓸데없지만 써봤다.

마지막 출력에 있어서 나는 if문으로 다 비교를 했는데, switch문을 쓴 사람도 있고, Math를 이용해서 푼 사람도 있었다. 거기까지는 생각을 못했기에 아래에 함께 첨부했다.


import java.util.*;

class Solution {
    public int[] solution(int[] lottos, int[] win_nums) {
        int[] answer = {0, 0};
        int zeroCnt = 0;

        Arrays.sort(lottos);
        for(int i = 0; i < 6; i++) {
            if(lottos[i] != 0) break;
            zeroCnt++;
        }

        Arrays.sort(win_nums);
        for(int j = 0; j < 6; j++) {
            for(int k = zeroCnt; k < 6; k++) {
                if(win_nums[j] != lottos[k])    continue;
                answer[0]++;
                answer[1]++;
            }
        }

        answer[0] += zeroCnt;

        for(int i = 0; i < 2; i++) {
            if(answer[i] == 6) answer[i] = 1;
            else if(answer[i] == 5) answer[i] = 2;
            else if(answer[i] == 4) answer[i] = 3;
            else if(answer[i] == 3) answer[i] = 4;
            else if(answer[i] == 2) answer[i] = 5;
            else answer[i] = 6;
        }

        return answer;
    }
}

🛠 배울 코드

class Solution {
    public int[] solution(int[] lottos, int[] win_nums) {
        int zero = 0;
        int matched = 0;
        
        for (int l : lottos) {
            if (l == 0) zero++;
            else {
                for (int w : win_nums) {
                    if (l == w) {
                        matched++;
                        break;
                    }
                }
            }
        }
        
        int min = matched;
        int max = matched + zero;
        
        int[] answer = {Math.min(7 - max, 6), Math.min(7 - min, 6)};
        return answer;
    }
}

0개의 댓글