CHashtag

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

알고리즘

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

HyoSeong 2021. 7. 2. 11:03
반응형

안녕하세요.

오늘은 프로그래머스 코딩테스트 연습 문제인 "로또의 최고 순위와 최저 순위" 를 풀어 보았습니다.

 

 

문제 링크


https://programmers.co.kr/learn/courses/30/lessons/77484

 

 

문제 풀이 방법


이번 문제의 풀이는 주석으로 달아두었습니다.

 

또한 이번 문제는 평균 약 0.23ms 정도의 속도로 테스트를 통과하였습니다.

 

 

코드


using System;

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

        int zeroCount = 0;
        int rightCount = 0;

        // for문보다 foreach문이 약 25%정도 더 빠릅니다.
        // 따라서 index가 필요없는 경우에는 foreach문을 사용하시는것이 더 좋습니다.
        // 참고: https://docs.google.com/document/d/1lXU5O_cftxLGNTaM20CedOi3daGz_9MZONeseaREx0k/edit
        foreach (int lotto in lottos)
        {
            if (lotto == 0)
            {
                zeroCount++;
                continue;
            }

            // 일치하는 번호가 있는지 확인한다.
            foreach (int winNum in win_nums)
            {
                if (lotto == winNum)
                {
                    rightCount++;
                    break;
                }
            }
        }

        // 최고 등수는 0인 것들이 모두 맞았다고 가정합니다.
        answer[0] = 7 - (rightCount + zeroCount);
            
        // 최저 등수는 0인 것들이 모두 틀렸다고 가정합니다.
        answer[1] = 7 - rightCount;

        // 위 계산식에서는 7등이 생기므로 7등 이상 등수는 모두 6등으로 치환해줍니다.
        if (answer[0] >= 7)
        {
            answer[0] = 6;
        }

        if (answer[1] >= 7)
        {
            answer[1] = 6;
        }

        return answer;
    }
}

 

감사합니다.

반응형