-
[Programmers / level1] 로또의 최고 순위와 최저 순위Programmers/코딩테스트 풀이 2021. 12. 19. 18:31
프로그래머스 / level1 / Java / 로또의 최고 순위와 최저 순위
문제 로또를 구매한 민우는 당첨 번호 발표일을 학수고대하고 있었습니다. 하지만, 민우의 동생이 로또에 낙서를 하여, 일부 번호를 알아볼 수 없게 되었습니다. 당첨 번호 발표 후, 민우는 자신이 구매했던 로또로 당첨이 가능했던 최고 순위와 최저 순위를 알아보고 싶어 졌습니다.
순서와 상관없이, 구매한 로또에 당첨 번호와 일치하는 번호가 있으면 맞힌 걸로 인정됩니다.
알아볼 수 없는 두 개의 번호를 각각 10, 6이라고 가정하면 3등에 당첨될 수 있습니다.
3등을 만드는 다른 방법들도 존재합니다. 하지만, 2등 이상으로 만드는 것은 불가능합니다.
알아볼 수 없는 두 개의 번호를 각각 11, 7이라고 가정하면 5등에 당첨될 수 있습니다.
5등을 만드는 다른 방법들도 존재합니다. 하지만, 6등(낙첨)으로 만드는 것은 불가능합니다.
민우가 구매한 로또 번호를 담은 배열 lottos, 당첨 번호를 담은 배열 win_nums가 매개변수로 주어집니다. 이때, 당첨 가능한 최고 순위와 최저 순위를 차례대로 배열에 담아서 return 하도록 solution 함수를 완성해주세요.class lottoSolution { public int[] solution(int[] lottos, int[] win_nums) { // 최대,최소 등수를 리턴하는 answer int[] answer = new int[2]; int[] level = {6,6,5,4,3,2,1}; int correct = 0; // 식별 가능한 번호 중 정답과 일치한 개수 int zero = 0; // 식별 불가능 한 0의 개수 for (int i = 0; i < win_nums.length ; i++) { if (lottos[i] == 0) { zero++; //lottos의 값이 0일 경우(맞을 확률이 있는 경우) } for (int j = 0; j < lottos.length ; j++) { if (win_nums[i] == lottos[j]) { correct++; // lottos의 값이 정답과 같은 경우(확실하게 맞은 경우) } } } // 확실하게 맞은 값과 맞을 확률이 있는 값을 더해 리턴하는 최대등수 answer[0] = level[correct + zero]; // 확실하게 맞은 값만 리턴하는 최소등수 answer[1] = level[correct]; return answer; } }
'Programmers > 코딩테스트 풀이' 카테고리의 다른 글
[Programmers/Level1] 숫자 문자열과 영단어 (0) 2022.01.20 [Programmers / level1] 신규 아이디 추천 (0) 2022.01.12 [Programmers / level1] 완주하지 못한 선수 (1) 2021.12.07 [Programmers / level1] 핸드폰 번호 가리기 (0) 2021.12.03 [Programmers / level1] 직사각형 별찍기 (0) 2021.12.02