프로그래머스 - 로또의 최고 순위와 최저 순위 (C#)

Leedong·2022년 7월 2일
0

programmers

목록 보기
2/18

문제 설명

시작 코드

using System;

public class Solution {
    public int[] solution(int[] lottos, int[] win_nums) {
        int[] answer = new int[] {};
        return answer;
    }
}

구입한 로또의 번호 목록 lottos, 당첨 번호 목록 win_nums를 받습니다.
알아볼 수 없는 번호 0의 존재로 최고 순위(a)와 최저 순위(b)를 알아내야 하고
int형 배열 [a, b]로 반환해야 합니다.

문제 풀이

0을 제외한 다른 숫자들은 lottos에 2개 이상 담겨있지 않는 조건이 있기 때문에
win_nums에 존재 여부만 파악하면 됩니다.
Array.Exists()라는 함수를 이용해서 특정 값이 Array에 존재하는 지 알 수 있습니다.

5등 조건이 2개 번호 일치라서 1개를 맞춘다고 순위가 올라가지 않습니다.
일단 순위 a, b를 임의의 7등부터 시작합니다. 그럼 1개 이상 맞춘 개수만큼 순위가 맞게 떨어집니다.

0개를 맞춘 경우는 값이 7이기 때문에 코드 마지막에 7일 경우 순위에 맞게 6으로 값을 변경해주면 됩니다.

최고 순위 a는 lottos 번호가 0이거나 정답이면 값을 내려주고(순위를 올림)
최저 순위 b는 정답인 경우에만 내려주면 됩니다.

제출 코드

using System;

public class Solution {
    public int[] solution(int[] lottos, int[] win_nums) 
    {
        int[] answer;
        
        int a = 7;
        int b = 7;
        
        for (int i = 0; i < lottos.Length; i++)
        {
            if (lottos[i] == 0) a--;
            else if (Array.Exists(win_nums, x => x == lottos[i]))
            {
                a--; b--;
            }
        }
        
        if (a == 7) a = 6;
        if (b == 7) b = 6;
        
        answer = new int[2] {a, b};
        
        return answer;
    }
}
profile
Unity, C#

0개의 댓글