로또 최고, 최저 순위 - 프로그래머스 Lv.1

Justin·2022년 7월 18일
0

알고리즘 풀이

목록 보기
2/7

문제 설명

1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권이있다. 내가 지원한 6개의 번호가 주어지고 그 중 일부가 지워져서 안보이며 그 부분은 숫자 0으로 주어진다.

그런 상황에서 나의 번호 6개(0 포함), 당첨 번호 6개가 주어졌을 때 최고 당첨 등수와 최저 당첨 등수를 출력해보는 것이다.

조건은 아래와 같다.

문제 해결 방식

첫 번째로 당첨 번호와 나의 번호를 비교하여 당첨된 수를 비교한다. 당첨된 번호가 있으면 Count를 증가시키기 위해 변수도 하나 선언해준다.

그리고 지워졌던 번호 0도 Count 해주기 위해 두 개의 int형 변수를 선언해준다.

int winCount = 0;
int possibleCount = 0;
            for (int i = 0; i < win_nums.Length; i++)
            {
                if (lottos[i] == 0)
                    possibleCount++;
                for (int j = 0; j < lottos.Length; j++)
                {
                    if (win_nums[i] == lottos[j])
                        winCount++;
                }
            }

이중 for문을 돌며 내가 지원한 번호에 0번이 있다면 possibleCount를 증가, 당첨번호와 같다면 winCount를 증가 시켜주었다.

answer[0] = winCount + possibleCount;
answer[1] = winCount + 0;

이렇게 하면 최고 맞은 개수, 최저 맞은 개수를 구할 수 있다.

하지만 이를 통해서 등수르 구해야하기에 구하기 위한 함수를 따로 제작해준다.

간단하게 Switch문을 통해 비교해주며 최고 맞은 개수, 최저 맞은 개수를 담아주면 된다.

GetRank(ref answer[0]);
GetRank(ref answer[1]);

return 값을 받는게 아닌 ref로 직접 변화 시켜주었다. 테스트를 해보니 다행이 잘 맞았다. 지난 번 1레벨 문제가 어려웠어서 1레벨이 왜이리 어렵지 했는데 이번 꺼는 다행이 쉬워서 금방 풀고 자신감이 생겼다.

profile
인디 게임을 만들며 공부하고 있습니다.

0개의 댓글