로또의 최고 순위와 최저 순위
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
난이도 : Level 1
유형 : 구현
코딩테스트 연습 > 2021 Dev-Matching: 웹 백엔드 개발자(상반기) > 로또의 최고 순위와 최저 순위
문제 설명
로또를 구매한 민우는 당첨 번호 발표일을 학수고대하고 있었습니다. 하지만, 민우의 동생이 로또에 낙서를 하여, 일부 번호를 알아볼 수 없게 되었습니다. 당첨 번호 발표 후, 민우는 자신이 구매했던 로또로 당첨이 가능했던 최고 순위와 최저 순위를 알아보고 싶어 졌습니다.
민우가 구매한 로또 번호를 담은 배열 lottos, 당첨 번호를 담은 배열 win_nums가 매개변수로 주어집니다. 이때, 당첨 가능한 최고 순위와 최저 순위를 차례대로 배열에 담아서 return 하도록 solution 함수를 완성해 주세요.
제한사항
- lottos는 길이 6인 정수 배열입니다.
- lottos의 모든 원소는 0 이상 45 이하인 정수입니다.
- 0은 알아볼 수 없는 숫자를 의미합니다.
- 0을 제외한 다른 숫자들은 lottos에 2개 이상 담겨있지 않습니다.
- lottos의 원소들은 정렬되어 있지 않을 수도 있습니다.
- win_nums은 길이 6인 정수 배열입니다.
- win_nums의 모든 원소는 1 이상 45 이하인 정수입니다.
- win_nums에는 같은 숫자가 2개 이상 담겨있지 않습니다.
- win_nums의 원소들은 정렬되어 있지 않을 수도 있습니다.
풀이
문제에서 주어진 로직을 잘 이해하고 구현하는 문제였다.
주어진 lottos와 win_nums를 비교해 당첨된 숫자를 세고 0의 숫자를 센다.
당첨된 숫자의 개수가 최저 순위, 당첨된 숫자의 개수 + lottos에서 0이 등장한 횟수 가 최고 순위이다.
코드
class Solution {
public int[] solution(int[] lottos, int[] win_nums) {
int[] answer = new int[2];
int count = 0;
int zero = 0;
// 당첨 숫자랑 몇개 같은지
for(int i = 0; i < win_nums.length; i++) {
for(int j = 0; j < lottos.length; j++) {
if(win_nums[i] == lottos[j]) {
count++;
break;
}
}
}
// 0의 개수
for(int j = 0; j < lottos.length; j++) {
if(0 == lottos[j]) {
zero++;
}
}
// 각 순위 계산
answer[1] = winning(count);
answer[0] = winning(count+zero);
return answer;
}
// 맞춘 숫자에 따라 순위 반환
public int winning(int x) {
switch (x) {
case 6:
return 1;
case 5:
return 2;
case 4:
return 3;
case 3:
return 4;
case 2:
return 5;
default:
return 6;
}
}
}
'알고리즘공부 > 프로그래머스' 카테고리의 다른 글
[JAVA] 신고 결과 받기 (2) | 2025.02.01 |
---|---|
[JAVA] k진수에서 소수 개수 구하기 (0) | 2025.02.01 |
[JAVA] 행렬 테두리 회전하기 (0) | 2025.02.01 |
[JAVA] 다단계 칫솔 판매 (0) | 2025.02.01 |
[JAVA] 2차원 동전 뒤집기 (0) | 2025.02.01 |