잡다한 배똥월드

728x90
코딩 테스트 풀이 체크리스트

 

 

코딩테스트 연습 - 로또의 최고 순위와 최저 순위

로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호

programmers.co.kr

 

 

 

 

import java.util.*;

class Solution {
    public int[] solution(int[] lottos, int[] win_nums) {
        int[] answer = new int[2];
        int result = 0;
        int zero = 0;
        for (int i = 0; i < lottos.length; i++) {
            if (lottos[i] != 0) {
                for (int j = 0; j < win_nums.length; j++) {
                    if (lottos[i] == win_nums[j]) {
                        result++;
                        break;
                    }
                }
            } else {
                zero++;
            }
        }        
        
        answer[0] = (result + zero == 0) ? 6 : 6 - (result + zero) + 1;
        answer[1] = (result == 0) ? 6 : 6 - result + 1;

        return answer;
    }
}

 

테스트 1 통과 (0.02ms, 73.4MB)
테스트 2 통과 (0.02ms, 80.8MB)
테스트 3 통과 (0.02ms, 71.9MB)
테스트 4 통과 (0.02ms, 76.2MB)
테스트 5 통과 (0.02ms, 80.9MB)
테스트 6 통과 (0.01ms, 73MB)
테스트 7 통과 (0.02ms, 74.3MB)
테스트 8 통과 (0.01ms, 73.4MB)
테스트 9 통과 (0.02ms, 73.6MB)
테스트 10 통과 (0.02ms, 75.2MB)
테스트 11 통과 (0.01ms, 73.6MB)
테스트 12 통과 (0.02ms, 77.3MB)
테스트 13 통과 (0.01ms, 77.1MB)
테스트 14 통과 (0.01ms, 80.2MB)
테스트 15 통과 (0.03ms, 71.3MB)

 

 

 

 

 

두번째 푸는 문제인데, 처음 풀었을 때의 코드가 더 깔끔한 것 같다..

 

 

 

 

일단 lottos에 0이 몇 개인지, win_nums와 같은 숫자가 몇 개인지 파악했고,

그걸 기준으로 순위를 계산했습니다.

 

 

 

 

이 문제를 풀면서 알게 된 점은 

int[] 즉, int 배열은 indexOf나 contains를 지원하지 않는다는 점이었다..!!!

그래서 for문으로 숫자가 있는지 없는지를 파악했는데, 그냥 ArrayList로 변환 후에 풀껄 그랬나.. 생각도 했다..

 

 

 

 

더보기
class Solution {
    public int[] solution(int[] lottos, int[] win_nums) {

        int bingo = 0;
        int lose = 0;

        for (int i = 0; i < lottos.length; i++) {
            if (lottos[i] != 0) {
                for (int j = 0; j < win_nums.length; j++) {
                    if (lottos[i] == win_nums[j]) {
                        bingo++;
                        break;
                    }
                }
            } else {
                lose++;
            }
        }

        int[] data = new int[]{6, 6, 5, 4, 3, 2, 1};

        return new int[]{data[bingo + lose], data[bingo]};
    }
}

 

 

어떻게 배열을 이용할 생각을 했지..?

저 때의 나 아주 잘했눼...

 

 

 

 

 

 

728x90

+ Recent posts