Link Search Menu Expand Document

Lv1. 로또의 최고 순위와 최저 순위

문제 링크

Java

Lv1

Success

문제 풀이

  • 로또 : 1부터 45까지의 숫자 중 6개를 찍어서 맞힌다.
  • 알아볼 수 없는 번호가 0으로 표기될 때, 구매한 로또로 당첨이 가능한 최고 순위와 최저 순위를 출력한다.
순위당첨 내용
16개 번호가 모두 일치
25개 번호가 일치
34개 번호가 일치
43개 번호가 일치
52개 번호가 일치
6(낙첨)그 외

주의 사항

  • ArrayList를 사용하면 배열 내에 값이 포함되는지 contains() 메서드를 통해 쉽게 알 수 있다.
  • switch를 이용해 맞는 개수(bestCnt, worstCnt)를 등수에 매칭시켜 줬는데, 맞은 개수에 따른 등수 배열을 만들면 index로 값을 매칭시킬 수 있어서 훨신 코드가 간결해진다.

    맞은 개수가 0개, 1개일 때 6등, 2개 5등, 3개 4등, …, 6개 1등이 된다.

전체 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import java.util.ArrayList;
import java.util.Arrays;

class Solution {
  public int[] solution(int[] lottos, int[] win_nums) {
    //lottos[] = 구매한 로또 번호를 담은 배열
    //win_nums[] = 당첨 번호를 담은 배열
    int bestCnt = 0; // 최대로 일치하는 개수
    int worstCnt = 0; // 최저로 일치하는 개수
    int[] prize = new int[] {6, 6, 5, 4, 3, 2, 1}; // 맞은 개수에 따른 점수
    //////////////////////// 0, 1, 2, 3, 4, 5, 6 // 맞은 개수

    ArrayList<Integer> list = new ArrayList<>(); // 0이 아닌 번호 저장

    for (int lotto : lottos) { // 구매한 로또 번호
      if (lotto == 0) { // 알아볼 수 없는 번호일 때
        bestCnt++;
      } else {
        list.add(lotto);				
      }
    }

    for (int num : win_nums ) {
      if (list.contains(num)) {
        bestCnt++;
        worstCnt++;
      }
    }

    return new int[] {prize[bestCnt], prize[worstCnt]};
  }
}

참고