개발자가 되고 싶은 개발자

[Algorithm] 프로그래머스- 로또의 최고 순위와 최저 순위 본문

Dev/Algorithm

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

Fullth 2021. 10. 5. 22:59

문제

 

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

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

programmers.co.kr

코드

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

        int zeroCnt = 0;
        int chkMatched = 0;

        for(int i : lottos) {
            if (i == 0) zeroCnt ++;
            else {
                for ( int j : win_nums) {
                    if(i == j) {
                        chkMatched++;
                        break;
                    }
                }
            }
        }

        int min = chkMatched;
        int max = chkMatched + zeroCnt;

        int[] answer = {Math.min(7-max, 6), Math.min(7-min, 6)};

        return answer;
    }
}

풀이

- 민우의 로또 번호가 담긴 lottos[ ], 당첨 번호가 담긴 win_nums[ ]

- 민우의 로또 번호에는 동생의 낙서로 인해, 일부 번호가 0값으로 들어가 있다.

 

- 민우의 로또 번호 배열을 순회하며 0을 찾아 카운트 해주었다.

 

- 당첨 번호와 일치하는 값을 찾아 카운트 해주었다. 로또 번호 중 중복값은 없으므로 값을 찾으면 break.

 

- 최소 일치하는 번호의 개수를 카운트 한 변수인 chkMatched를 min에 저장해준다.

- 0이 만약 전부 당첨 번호라면 min과 0을 카운트 한 값이 최대 일치하는 수이다. 둘을 더하여 max값에 넣어준다.

로또의 순위를 정하는 방식

- 위 이미지와 같이 일치하는 수에 따라서 순위가 정해진다.

- switch문을 사용하여도 가능하고 다른 방법으로도 가능하다.

- 위 표에서 순위와 일치하는 번호의 규칙을 찾아보면 7-순위=일치하는 번호 임을 알 수 있다.

 

회고

- 글로서 풀이를 적어보는 것은 또 다른 느낌...

- 이제 level1 푼다고 조급해하면서 이것저것 손만 벌리면 어중이떠중이가 된다. 벌써 10월! 정신차리자

 

 

'Dev > Algorithm' 카테고리의 다른 글

[Algorithm] 유형 목록  (0) 2022.06.11
[Algorithm] 프로그래머스 레벨2 124나라의 숫자  (0) 2022.01.06
[Algorithm] Euclidean Algorithm  (0) 2021.11.07
[Algorithm] Greedy Algorithm  (0) 2021.11.02
[Algorithm] 신규 아이디 추천  (0) 2021.10.07