코린이의 소소한 공부노트

[프로그래머스/Lv.1] 로또의 최고 순위와 최저 순위 본문

코딩테스트 풀이/JAVA

[프로그래머스/Lv.1] 로또의 최고 순위와 최저 순위

무지맘 2022. 11. 15. 01:51

1. Input

1) 구매한 로또 번호를 담은 배열 lottos

2) 당첨 번호를 담은 배열 win_nums

 

2. Output

1) 당첨 가능한 최고 순위와 최저 순위를 차례대로 담은 배열

 

3. Constraint

1) lottos, win_nums는 길이가 6int 배열

2) lottos의 모든 원소는 0 이상 45 이하인 정수

3) 0은 알아볼 수 없는 숫자를 의미

4) win_nums의 모든 원소는 1 이상 45 이하인 정수

5) lottos에 중복 숫자는 0뿐이다.

6) win_nums에 중복되는 숫자는 없다.

7) lottos, win_nums의 원소들은 정렬되어 있지 않을 수도 있다.

 

4. Example

Input: lottos={44, 1, 0, 0, 31, 25}, win_nums={31, 10, 45, 1, 6, 19} -> Output: {3, 5}

설명:

- 31, 12개 번호는 일치하므로 최소 5등 당첨

- 0, 0이 나머지 {10, 45, 6, 19} 2개라면 4개 번호 일치로 최대 3

- 따라서 {3, 5} 반환

 

5. Code

1) 첫 코드(2022/??)

import java.util.*;

int count_zero = 0;
int count_correct = 0;
List<Integer> list = new ArrayList();
for(int i=0 ; i<6 ; i++)
    list.add(win_nums[i]);

for(int i=0 ; i<6 ; i++){
    if(lottos[i]==0) count_zero++;
    if(list.contains(lottos[i])) count_correct++;
}

if(count_zero == 6)
    return new int[] {1,6};

if(count_correct == 0)
    return new int[] {6,6};

return new int[] {7-(count_zero+count_correct), 7-count_correct};