개미의 개열시미 프로그래밍

[프로그래머스] 로또의 최고 순위와 최저 순위(자바 풀이) 본문

알고리즘

[프로그래머스] 로또의 최고 순위와 최저 순위(자바 풀이)

YunHyeok 2022. 2. 5. 21:11
728x90
반응형

 

[나의 풀이]

import java.util.*;
class Solution {
    public int[] solution(int[] lottos, int[] win_nums) {
        int zeroCnt = 0;
        int equalCnt = 0;
        
        for(int i=0; i<6; i++){
            if(lottos[i] == 0) zeroCnt+=1; // 0 카운트
            for(int j=0; j<6; j++){
                if(lottos[i] == win_nums[j]) equalCnt += 1; // 두 로또 비교 후 같은 경우
            }
        }
        
        int max = 7 - (equalCnt + zeroCnt);
        int min = 7 - equalCnt;
        if(max==7) max = 6;
        if(min==7) min = 6;
  
        return new int[] {max, min};
    }
}

// 첫 풀이
//         int[] ans = new int[2];
//         ans[0] = equalCnt + zeroCnt;
//         ans[1] = equalCnt;
        
//         int[] result = new int[2];
//         for(int i=0; i<2; i++){
//             if(ans[i] == 6){
//                 result[i] = 1;     
//             }else if(ans[i] == 5){
//                 result[i] = 2;
//             }else if(ans[i] == 4){
//                 result[i] = 3;
//             }else if(ans[i] == 3){
//                 result[i] = 4;
//             }else if(ans[i] == 2){
//                 result[i] = 5;
//             }else{
//                 result[i] = 6;
//             }
//         }
        //System.out.println(Arrays.toString(result));
  1. lottos배열과 win_nums를 이중 for문으로 비교 후에 같은 것을 카운팅 해서 equalCnt에 저장했고 lottos에 있는 0만 카운팅 해서 zeroCnt변수에 저장했다.


  2. 처음에는 반복문과 여러개의 조건문을 써서 최고 순위와 최저 순위를 리스트에 저장했는데 이 방법은 비효율적이다. 
    다음으로 생각해낸 풀이는 7에서 두 배열 비교후 같은 수와 0을 카운팅 한 수를 빼서 최고 순위와 최저 순위를 기록하는 것인데 if(min==7) min=6; 부분만 작성하면 될 줄 알았더니 오답이 나왔다. 생각해보니 lottos배열에 0은 하나도 없지만 다 틀렸을 경우도 생각해줘야 해서 if(max==7) max=6;을 추가해주었더니 답이 나왔다. 

 

728x90
반응형
Comments