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

이준경·2021년 5월 5일
0

<나의풀이>

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
33
34
35
36
37
38
39
40
41
42
43
44
class Solution {
    public static int rank(int num){
        switch(num){
            case 0:
            case 1:
                return 6;
            case 2:
                return 5;
            case 3:
                return 4;
            case 4:
                return 3;
            case 5:
                return 2;        
            case 6:
                return 1;
            default :
                return -1;
        }
 
    }
 
    public int[] solution(int[] lottos, int[] win_nums) {
        int[] answer = new int[2];
        int min=0, zero=0;
 
        for(int i = 0; i<6; i++){
            if(lottos[i]==0){
                zero++;
            }
            else{
                for(int j=0; j<6; j++){
                    if(lottos[i] == win_nums[j])
                        min++;
                }
            }
        }
        answer[0]=rank(min+zero);
        answer[1]=rank(min);
 
 
        return answer;
    }
}
cs
  1. 로또를 맞춘 넘버 수를 받아 순위를 리턴하는 rank함수 생성
  2. 로또에 낙서가 되어 0이 된 경우 무조건 맞는 넘버임. 0의 개수를 zero에 대입
  3. 낙서가 안된 숫자 중 로또 숫자와 맞는 경우 min 증가.
  4. 최저 순위는 min. 최고 순위는 min+zero. 각각 rank()로 순위 측정 후 answer 대입.
  5. asnwer 반환

<다른 사람 풀이>

1
2
3
4
5
6
7
8
9
10
11
12
13
import java.util.Arrays;
import java.util.stream.LongStream;
 
class Solution {
    public int[] solution(int[] lottos, int[] winNums) {
        return LongStream.of(
                (lottos.length + 1- Arrays.stream(lottos).filter(l -> Arrays.stream(winNums).anyMatch(w -> w == l) || l == 0).count(),
                (lottos.length + 1- Arrays.stream(lottos).filter(l -> Arrays.stream(winNums).anyMatch(w -> w == l)).count()
        )
                .mapToInt(op -> (int) (op > 6 ? op - 1 : op))
                .toArray();
    }
}
cs
  1. lottos 안의 스트림 요소가 winNums의 스트림요소 안에 있는지 검사. true 거나 lottos의 요소가 0이라면 true. 전체 조건식이 true면 로또 맞은 갯수가 count가 됨. 전체 로또 개수+1에서 현재 맞은 count를 빼면 로또 순위와 같아짐. 최고 순위를 구하는 방법
  2. 1번과 같은 방식이지만 l==0이라는 구문이 빠짐. 따라서 이번엔 최저 순위를 구하게됨.
  3. 1,2번을 통해 얻은 요소를 int로 타입 변환함
  4. 두개의 요소를 배열로 바꿔 리턴함.

0개의 댓글

관련 채용 정보